首页 > 代码库 > Poj 1836

Poj 1836

81.86 1.86 1.30621 2 1.4 1 1.97 2.2有八个大兵身高如上 求至少出列几个大兵可以站成山形队列#include<iostream>using namespace std;double a[1111];int dp1[1111];int dp2[1111];int main(){	int i,j;	int n;	int max;	while(scanf("%d",&n)!=EOF)	{		max=0;		for(i=1;i<=n;i++ )		{			dp1[i]=1;			dp2[i]=1;			scanf("%lf",&a[i]);		}		for(i=1;i<=n;i++)		{			int max1=0;			for(j=i-1;j>=1;j--)			{				if(a[i]>a[j]&&dp1[j]>max1)					max1=dp1[j];			}			dp1[i]+=max1;		}		for(i=n;i>=1;i--)		{			int max2=0;			for(j=n;j>i;j--)				if(a[i]>a[j]&&max2<dp2[j])					max2=dp2[j];			dp2[i]+=max2;		}		int x,y;		for(i=1;i<=n;i++)			for(j=i+1;j<=n;j++)				if(dp1[i]+dp2[j]>max)				{					x=i;y=j;					max=dp1[i]+dp2[j];				}							if(x!=y)		cout<<n-max<<endl;			else cout<<n-max+1<<endl;	}	return 0;}