您的位置:首页 > 其它

Vijos P1571笨笨的导弹攻击

2015-07-17 21:32 302 查看
入门LIS。练习题

#include<iostream>
using namespace std;
int n,temp,k=1;
int dp[10005];
void myswap(int m)
{
	for(int i=1;i<k;i++)
	{
		if(i!=k-1)
		{
			if(i%2)//基数位置
			{
				if(temp>=dp[i-1]&&temp>=dp[i+1])
				{
					dp[i]=temp;
				}
			}
			else//偶数位置
			{
				if(temp<=dp[i-1]&&temp<=dp[i+1])
				{
					dp[i]=temp;
				}
			}
		}
		else
		{
			if(i%2)//基数位置
			{
				if(temp>=dp[i-1])
				{
					dp[i]=temp;
				}
			}
			else//偶数位置
			{
				if(temp<=dp[i-1])
				{
					dp[i]=temp;
				}
			}
		}
	}		
}
int main()
{
	cin>>n;
	dp[0]=-1;
	for(int i=1;i<=n;i++)
	{
		cin>>temp;
		if(k%2)//基数位置
		{
			if(temp>dp[k-1])
			{
				dp[k++]=temp;
			}
			myswap(temp);
		}
		else//偶数位置
		{
			if(temp<dp[k-1])
			{
				dp[k++]=temp;
			}
			myswap(temp);
		}
	}
	cout<<k-1<<endl;
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: