hdu 1257 最少拦截系统(最长单调递增序列)

省赛结束后一直都没做题,CF的#119被虐了一次nbut的校赛被虐一次,,,,还要无节操的主持校赛。。。看了某大神对其学校集训队的一番教训,真是雄心又起..。重新燃起我ac的热血吧。acmer,不舍啊,退役不能。

dp开始、

先来一发最长递增子序列,,水.这两天再把这两次比赛整理下。

每一个导弹都是要被打出来的,如果后面有一个比他高的导弹,那想打他的那个导弹就不能打那个导弹,如此便是一个求最长递增序列的问题。

#include<iostream>
#include<cstdio>
#include<cmath>
#define INF	1<<30
using namespace std;
int main()
{
	int a[1005],F[1005],T; 
	int n,i,len=0,ans,j;
	while(~scanf("%d",&T))
	{
		for(i=0;i<T;i++)
		{	
			scanf("%d",&n);
			a[i]=n;
		}
		memset(F,0,sizeof(F));
		ans=-INF;
		for(i=0;i<T;i++)
			for(j=i-1;j>=0;j--)
			{
				if(F[i]<F[j]+1&&a[i]>a[j])
					F[i]=F[j]+1;
				if(F[i]>ans)	ans=F[i];
			}
		cout<<ans+1<<endl;
	}
	return 0;
}


你可能感兴趣的:(hdu 1257 最少拦截系统(最长单调递增序列))