Codeforces Round #335 (Div. 1) A. Sorting Railway Cars

題意:n個數編號1~n,現在給出亂序的n個數,其中任意一個數可以掉到序列頭或序列尾,最終使得這個序列按遞增的順利排列,也就是按照1~n排列,問最少需要操作多少次

貼代碼吧,直接套用最長遞增子序列的板子會超時,只能看着別人的去優化了,而且還必須弄成全局變量,不然第10個用例會wa掉,簡直wa哭了

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n,p[100010],i,k,dp[100010],ans=0;
int main()
{

    while(scanf("%d",&n)!=EOF)
    {
        for(i=1;i<=n;i++)
        {
            scanf("%d",&p[i]);
        }
        for(i=1;i<=n;i++)
        {
            dp[p[i]]=dp[p[i]-1]+1;
            ans=max(ans,dp[p[i]]);
        }
        printf("%d\n",n-ans);
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章