题目链接
思路:转换一下思维,我们考虑一下哪些数可以不用动,那么这个题就变成了求最长上升子序列的裸体了,答案就是n-LIS。
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e3+5;
pair<int,double>a[maxn];
int n,m,dp[maxn],ans=0;
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;++i) scanf("%d %lf",&a[i].first,&a[i].second);
for(int i=1;i<=n;++i)
{
dp[i]=1;
for(int j=1;j<i;++j)
if(a[i].first>=a[j].first&&dp[j]+1>dp[i]) dp[i]=dp[j]+1;
ans=max(ans,dp[i]);
}
printf("%d\n",n-ans);
}