贪心水题。
思路:将原排列弄成有序数列的最少操作,转化一下思维就是不用操作的最多数字。
LIS?
不止。
如 1 2 4 5 3,ans=2,但n-lis=1
所以要求的是连续的lis。
O(n)求连续lis:做一个类似桶(?)的东西,递推一下即可,看一下代码就懂了。。
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int n,a[100005],b[100005],ans;
int main() {
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]),
b[a[i]]=b[a[i]-1]+1,
ans=max(ans,b[a[i]]);
cout<<n-ans;
}