51Nod 1241

来源:互联网 发布:网页前端开发知乎 编辑:程序博客网 时间:2024/06/06 10:49

第一眼想法是 ans=min(n-最长下降子序列,n-最长上升子序列)
然后发现找到的子序列相邻两位必须是相差 1 的
然后搞一下就好了(没考虑下降的貌似还是过了)

#include<cstdio>#include<algorithm>using namespace std;int n,x,ans;int dp[50005];int main(){    scanf("%d",&n);    for(int i=1;i<=n;++i)    {        scanf("%d",&x);        dp[x]=dp[x-1]+1;        ans=max(ans,dp[x]);    }    printf("%d",n-ans);    return 0;}
原创粉丝点击