【HDU】5256 系列转换(上涨时间最长的序列修饰)
生活随笔
收集整理的這篇文章主要介紹了
【HDU】5256 系列转换(上涨时间最长的序列修饰)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
假設a[i]和a[j]我想的一樣,滿足條件的需要是
a[j] - a[i] > j - i
也就是說,a[i] - i < a[j] - j
例1 4 2 不滿意,所以1和2必須有必要之間改變
a[i] - i求其最長上升子序列就能夠了
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 100005; const int INF = 5000000; int n; int arr[maxn],g[maxn]; int main(){int T,Case = 1;scanf("%d",&T);while(T--){scanf("%d",&n);for(int i = 1; i <= n; i ++) g[i] = INF;for(int i = 1; i <= n; i++){scanf("%d",&arr[i]);arr[i] -= i;}int ans = 0;for(int i = 1; i <= n; i++){int pos = upper_bound(g + 1,g + n + 1,arr[i]) - g;ans = max(ans,pos);g[pos] = arr[i];}printf("Case #%d:\n",Case++);printf("%d\n",n - ans);}return 0; }轉載于:https://www.cnblogs.com/hrhguanli/p/4569870.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【HDU】5256 系列转换(上涨时间最长的序列修饰)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OGG】OGG的单向复制配置-支持DD
- 下一篇: 零食推广活动