hdu5256序列严格递增

题意:一个数列,a1,a2,a3,a4,---,an,需要最少修改多少个元素,使得这个序列严格递增?
a[i]-i 非递减序列 因为a[i]=a[i],整理得a[i+1]-(i+1)>=a[i]-i。令b[i]=a[i]-i。则可以求出b[i]的最长不下降子序列的长度len,最后用n-len即为需要改变的最少的元素个数。
【hdu5256序列严格递增】

#include #include #include #include #include using namespace std; const int N=1000005; int T,n,m; int a[N]; int b[N]; int cas=1; int solve(int n){ int len=1; b[0]=a[0]; for(int i=1; i=b[len-1]) b[len++]=a[i]; else{ int pos=upper_bound(b,b+len,a[i])-b; b[pos]=a[i]; } } return len; } int main() { #ifndefONLINE_JUDGE freopen("aaa","r",stdin); #endif scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=0; i



    推荐阅读