奇妙。
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
const int maxn=1e5+10;
int a[maxn],dp[maxn];
int len;
int n;
int main()
{
int t;
scanf("%d",&t);
for(int kk=1;kk<=t;kk++){
printf("Case #%d:\n",kk);
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
a[i]-=i;
}
dp[0]=a[0];
len=1;
for(int i=1;i<n;i++){
if(a[i]>=dp[len-1]) dp[len++]=a[i];
else{
int pos=upper_bound(dp,dp+len,a[i])-dp;
dp[pos]=a[i];
}
}
cout<<n-len<<endl;
}
}