hdu 1423 最长公共递增子序列
刚刚习得这一技巧,做的太好了,可以直接拿来当模板用。估计也不会有什么变式之类的麻烦的东西。直接贴代码,太短了,一看就记住了。
#include<iostream>using namespace std;int a[505],b[505],f[505];int main(){ int T,i,n1,n2,j,k,max; cin>>T; for(i=1;i<=T;i++) { cin>>n1; for(j=1;j<=n1;j++) cin>>a[j]; cin>>n2; for(j=1;j<=n2;j++) cin>>b[j]; memset(f,0,sizeof(f)); for(j=1;j<=n1;j++) { max=0; for(k=1;k<=n2;k++) { if(a[j]>b[k]&&max<f[k]) max=f[k]; if(a[j]==b[k]) f[k]=max+1; } } max=0; for(j=1;j<=n2;j++) if(f[j]>max) max=f[j]; cout<<max<<endl; if(i!=T) cout<<endl; } return 0;}