PTA 1045【DP】

来源:互联网 发布:免费php网站模板 编辑:程序博客网 时间:2024/06/05 10:07

思路:

DP[ i ] 代表以值 i 结尾的当前最长长度。
每次枚举序列数组,dp[ i ] = max( dp[ i ] ,dp[ a[j] ] + 1);

#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N=2e2+10;int n,m;int a[N],id[N];int dp[N],x;int main(){int t;scanf("%d",&t);scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);id[a[i]]=i;}scanf("%d",&m);memset(dp,0,sizeof(dp));for(int i=1;i<=m;i++){scanf("%d",&x);int pos=id[x];for(int j=pos;j>=1;j--)dp[x]=max(dp[x],dp[a[j]]+1);}int ans=1;for(int i=1;i<=n;i++)ans=max(dp[a[i]],ans);printf("%d\n",ans);return 0;}


1 0
原创粉丝点击