关于LCIS
查看原帖
关于LCIS
593611
tsoi_blackhikari楼主2022/9/22 19:13

测试考了LCIS,之前没有写过相关题目,也没有接触过相关解法,自己推出来一个感觉非常奇怪的dpdp,过了,神牛们能不能看一下这种写法会不会有情况没考虑,被出题人卡

代码

#include<bits/stdc++.h>
using namespace std;
int n,a[3007],b[3007],g[3007],cnt,ans=0,x[3007],y[3007];
int dp[3007];
int main()
{
	freopen("lcis.in","r",stdin);
	freopen("lcis.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=n;i++){
		scanf("%d",&b[i]);
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(a[i]==b[j]){
				g[++cnt]=a[i];
				y[cnt]=j;
			}
		}
	}
	for(int i=1;i<=cnt;i++) dp[i]=1;
	for(int i=1;i<=cnt;i++){
		for(int j=1;j<i;j++){
			if(g[i]>g[j]&&y[i]>y[j]){
				dp[i]=max(dp[i],dp[j]+1);
			}
		}
	}
	for(int i=1;i<=cnt;i++){
		ans=max(dp[i],ans);
	}
	printf("%d",ans);
	return 0; 
}
2022/9/22 19:13
加载中...