基本思路是求最长的以1为等差的上升子序列,
然后n-序列长度 就是答案。
不太明白为什么这样做,但其实现方法和思路都是很神奇的。
仍在理解中(°ー°〃)(°ー°〃)
#include <bits/stdc++.h>
using namespace std;
#define maxn 100003
int pos[maxn],p[maxn];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&p[i]),pos[p[i]]=i;
int ans=1,cnt=1;
for(int i=2;i<=n;i++){
if(pos[i]>pos[i-1])cnt++;
else cnt=1;
ans=max(ans,cnt);
}
printf("%d\n",n-ans);
return 0;
}
/*
6
5 1 3 2 6 4
*/