CF 463D Gargari and Permutations [dp]
Posted zhchoutai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF 463D Gargari and Permutations [dp]相关的知识,希望对你有一定的参考价值。
给出一个长为n的数列的k个排列(1?≤?n?≤?1000; 2?≤?k?≤?5)。求这个k个数列的最长公共子序列的长度
dp[i]=max{dp[j]+1,where j<i 且j,i相应的字符在k个排列中都保持同样的相对位置}
#include <iostream> #include <vector> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> using namespace std; #define pb push_back const int NN=2222; int f[7][NN]; int maxn; int anti[7][NN]; int dp[NN]; int main(){ #ifndef ONLINE_JUDGE freopen("/home/rainto96/in.txt","r",stdin); #endif int n,k;cin>>n>>k; for(int i=1;i<=k;i++) for(int j=1;j<=n;j++){ cin>>f[i][j]; anti[i][f[i][j]]=j; } for(int i=1;i<=n;i++){ for(int j=0;j<i;j++){ bool flag=false; for(int m=1;m<=k;m++) if(anti[m][f[1][i]]<anti[m][f[1][j]]) flag=true; if(flag) continue; dp[i]=max(dp[i],dp[j]+1); } maxn=max(maxn,dp[i]); } cout<<maxn<<endl; return 0; }
以上是关于CF 463D Gargari and Permutations [dp]的主要内容,如果未能解决你的问题,请参考以下文章
CF 463D Gargari and Permutations [dp]
CF463D Gargari and Permutations (LCS)
Codeforces 463D Gargari and Permutations:隐式图dp多串LCS
Codeforces 463D Gargari and Permutations(求k个序列的LCS)