标签:
Alignment
Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u
Description
Input
Output
Sample Input
8 1.86 1.86 1.30621 2 1.4 1 1.97 2.2
Sample Output
4
http://blog.csdn.net/lanjiangzhou/article/details/8993095
我又醉了,为啥感觉一样的代码,除了复制,就是一个wa,一个ac,,受不鸟
直接粘好了:
#include<iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
#define MAXN 1010
double s[MAXN];
int a[MAXN],b[MAXN];
int n;
int main()
{
while(cin>>n)
{
int i,j;
for(i=1;i<=n;i++)
scanf("%lf",&s[i]);
a[1]=1;
for(i=2;i<=n;i++)//从头开始计算最长的递增序列
{
a[i]=1;
for(j=1;j<i;j++)
{
if(s[i]>s[j]&&a[j]>=a[i])
a[i]=a[j]+1;
}
}
b[n]=1;
for(i=n-1;i>=1;i--)//从尾部计算最长的递增序列
{
b[i]=1;
for(j=n;j>i;j--)
{
if(s[i]>s[j]&&b[j]>=b[i])
b[i]=b[j]+1;
}
}
int max=-100000;//初始化max
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
if(a[i]+b[j]>max)
max=a[i]+b[j];
}
}
printf("%d\n",n-max);
}
return 0;
}
链接:http://blog.csdn.net/dangwenliang/article/details/5728363
IDEAS:
对于英文题,就是要一个词一个词的扣意思,对于像我这种最不爱扣意思的人是大忌。所以才有了,什么不踏实之类的说法。
不要想当然don‘t take it for granted,理解好题意是根本,基础。
本题:就是说任何一个士兵向某一个方向(left or right看,都没有超过他height的人。呃, 这是什么意思,最长子序列?是,但貌似又没有那么简单。
还请看:http://blog.csdn.net/lanjiangzhou/article/details/8993095
//最长单调子序列,看清题意,从左边求上升,从右边求下降,然后相加,注意中间两个点的高度可以相同
//思路:用了两个LIS分别从前往后和从后往前,得到啊a[],b[],最后取a[i]+b[i]的最大值;
标签:
原文地址:http://www.cnblogs.com/Tinamei/p/4466484.html