这题没什么好说的,直接贪心就可以了
可以发现在最优方案中,没有被移动过的数字一定是连续单调增的
那么直接刷最长的连续单调增序列就好了
示例程序:
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=50005;
int n,f[maxn];
int main(){
scanf("%d",&n);
for (int i=1;i<=n;i++)
int ans=0;
for (int i=1;i<=n;i++) ans=max(ans,f[i]);
return printf("%d",n-ans),0;
}