您的位置:首页 > 其它

online_judge_1131

2015-12-21 18:11 274 查看
#include <iostream>
#include <algorithm>
#include <cstdio>

using namespace std;

int main()
{
int n,i,j,t;
int dp1[101],dp2[101];
//int dp3[101];
int a[101],ans;
//int b[101];
while(scanf("%d",&n) != EOF)
{
for(i=1; i<=n; ++i)
scanf("%d",&a[i]);
for(i=1; i<=n; ++i)
{
dp1[i] = 1;
dp2[i] = 1;
}
for(i=2; i<=n; ++i)
{
for(j=1; j<i; ++j)
{
if(a[i] > a[j])
dp1[i] = max(dp1[i], dp1[j]+1);
}
}
for(i=n-1; i>=1; --i)
{
for(j=n; j>i; --j)
{
if(a[i] > a[j])
dp2[i] = max(dp2[i], dp2[j]+1);
}
}
ans = 101;
/*t = 0;
dp3
= 0;
b
= 0;
for(i=n-1; i>=1; --i)
{
if(t < dp2[i+1])
{
t = dp2[i+1];
dp3[i] = t;
b[i] = i+1;
}
}*/
for(i=1; i<=n; ++i)
{
t = 0;
for(j=i+1; j<=n; ++j)
{
if(dp2[j] > t && a[j] != a[i])
{
t = dp2[j];
}
}
ans = min(ans, n-dp1[i]-t);
}
printf("%d\n",ans);
}
return 0;
}


这个题目要注意的细节还是很多的……做了好久。。

最后,一定要记住,输入输出尽量用C语言的标准,C++的会慢很多。之前用cout、cin就是超时。改用scanf和printf就好了……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: