首页 > 其他分享 >dp3 登山

dp3 登山

时间:2022-09-29 19:11:25浏览次数:33  
标签:登山 dp3 cn int -- 基德

题目网址: http://noi.openjudge.cn/ch0206/1996/

最长上升子序列问题

不能用reverse 因为一旦反转,本来第n个点就变成第一个点了,g[1]就变成f[n]了,会麻烦些

怪盗基德那道题之所以能变,是因为让求得是最值

 

#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int n;
int a[N];
int res;

int main()
{
	int f[N],g[N];
	
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	
	for(int i=1;i<=n;i++)
	{
		f[i]=1;
		for(int j=1;j<i;j++)
		if(a[j]<a[i]) f[i]=max(f[i],f[j]+1);   //这是最长上升子序列的板子
	}
	
	for(int i=n;i>=1;i--)
	{
		g[i]=1;
		for(int j=n;j>i;j--)
		if(a[j]<a[i]) g[i]=max(g[i],g[j]+1);
	}
	
	for(int i=1;i<=n;i++) res=max(res,f[i]+g[i]-1);
	
	cout<<res;
	
	return 0;
}

  

标签:登山,dp3,cn,int,--,基德
From: https://www.cnblogs.com/tolter/p/16742682.html

相关文章