标签:cst ret 一个 blog 数据 输入输出 这一 ios class
//思路同登山问题 /*方法:dp,可将问题分解为一个上升子序列加一个下降子序列的和的最大值减去他们的公共点Ti的长度1, 则题目可以理解为一个正序最长上升子序列长度和一个倒叙最长上升子序列长度之和,减去公共部分1,再用总人数减去它即可得到最终答案 */ #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<cstdlib> #include<cmath> using namespace std; int N,a[1200]; int ans=0; int maxlen1[1200],maxlen2[1200]; int main() { scanf("%d",&N); for(int i=1; i<=N; i++) { scanf("%d",&a[i]); maxlen1[i]=1; maxlen2[i]=1; } for(int i=1; i<=N; i++) { for(int j=1; j<=i-1; j++) { if(a[i]>a[j]) { maxlen1[i]=max(maxlen1[i],maxlen1[j]+1); } } } for(int i=N; i>=1; i--) { for(int j=N; j>=i+1; j--) { if(a[i]>a[j]) maxlen2[i]=max(maxlen2[i],maxlen2[j]+1); } } for(int i=1; i<=N; i++) { ans=max(ans,maxlen1[i]+maxlen2[i]-1); } printf("%d\n",N-ans); return 0; }
标签:cst ret 一个 blog 数据 输入输出 这一 ios class
原文地址:http://www.cnblogs.com/oi-forever/p/7324855.html