http://acm.hdu.edu.cn/showproblem.php?pid=1423
1 #include<stdio.h> 2 #include<string.h> 3 int a[510],b[510]; 4 int dp[510]; 5 int main() 6 { 7 int t,m,n,i,j; 8 scanf("%d",&t); 9 while(t--) 10 { 11 scanf("%d",&m); 12 for(i=1;i<=m;i++) 13 scanf("%d",&a[i]); 14 scanf("%d",&n); 15 for(i=1;i<=n;i++) 16 scanf("%d",&b[i]); 17 memset(dp,0,sizeof(dp)); 18 int ans=0,k; 19 dp[0]=-1; 20 for(i=1;i<=m;i++) 21 { 22 k=0; 23 for(j=1;j<=n;j++) 24 { 25 if(b[j]<a[i]&&dp[j]>dp[k]) 26 k=j; 27 if(b[j]==a[i]) 28 dp[j]=(dp[k]>=0?dp[k]:0)+1; 29 } 30 } 31 for(i=0;i<=500;i++) 32 { 33 if(ans<dp[i]) 34 ans=dp[i]; 35 } 36 printf("%d\n",ans); 37 if(t) printf("\n"); 38 } 39 return 0; 40 }
时间: 2024-10-12 21:26:09