码迷,mamicode.com
首页 > 编程语言 > 详细

51nod 1241:特殊的排序

时间:2017-04-17 12:42:25      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:链接   iostream   html   oid   span   sync   sla   clu   div   

51nod 1241:特殊的排序

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1241

题目大意:给出$n$个数($1 \leqslant a_i \leqslant n$),现在要对这个数组进行排序,在排序时只能将元素放在数组的头部或尾部,问至少需要移动多少个数字,才能完成整个排序过程?

DP

显然最少操作数等于$n-|$最长连续子序列$|$.

故定义状态:$dp[i]$表示以$i$结尾的连续子序列长度.

转移方程:$dp[i]=dp[i-1]+1$.

代码如下:

 1 #include <iostream>
 2 #define N 50005
 3 using namespace std;
 4 int n,t,dp[N],ans;
 5 int main(void){
 6     std::ios::sync_with_stdio(false);
 7     cin>>n;
 8     for(int i=0;i<n;++i){
 9         cin>>t;
10         dp[t]=dp[t-1]+1;
11         ans=max(ans,dp[t]);
12     }
13     cout<<n-ans;
14 }

 

51nod 1241:特殊的排序

标签:链接   iostream   html   oid   span   sync   sla   clu   div   

原文地址:http://www.cnblogs.com/barrier/p/6722247.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!