hdu 1423(lcis)
Posted 发牌员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 1423(lcis)相关的知识,希望对你有一定的参考价值。
难受,看了好长时间,两种思想的结合,加了个dp[j]>=dp[tt]看了好长时间
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; const int maxn=500+10; int a[maxn],b[maxn],dp[maxn]; int t,m,n; int main() { scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=1; i<=n; i++) scanf("%d",&a[i]); scanf("%d",&m); for(int i=1; i<=m; i++) scanf("%d",&b[i]); memset(dp,0,sizeof(dp)); for(int i=1; i<=n; i++) { int tt=1; for(int j=1; j<=m; j++) { if(a[i]>b[j]&&dp[j]>=dp[tt]) tt=j;//a[i]>b[j]确保在后面a[i]==b[j]的时候是上升的,dp[j]>=dp[tt]确保处于lcis序列中 if(a[i]==b[j]) dp[j]=dp[tt]+1; } } int maxi=0; for(int i=1; i<=m; i++) maxi=max(maxi,dp[i]); printf("%d\n",maxi); if(t) printf("\n"); } return 0; }
以上是关于hdu 1423(lcis)的主要内容,如果未能解决你的问题,请参考以下文章