Codeforces 264 (Div. 2) D. Gargari and Permutations
2017-07-29 19:31
501 查看
题意:给定k个1~n的排列,求出k个序列的LCS长度。
思路:如果k列中,每个i都在j前面,那就在i到j之间连一条有向边。这样问题转换为求最长DAG。
还可以这样建图。。
记录每个点在序列中的位置。然后每两个数都要判断一下。在k个序列中,I都在j的前面,那么建立一条有向边。
思路:如果k列中,每个i都在j前面,那就在i到j之间连一条有向边。这样问题转换为求最长DAG。
还可以这样建图。。
记录每个点在序列中的位置。然后每两个数都要判断一下。在k个序列中,I都在j的前面,那么建立一条有向边。
#include<cstdio>//思路:如果k列中,每个i都在j前面,那就在i到j之间连一条有向边。这样问题转换为求最长DAG #include<queue> #include<iostream> #include<vector> #include<map> #include<cstring> #include<string> #include<set> #include<stack> #include<algorithm> #define cle(a) memset(a,0,sizeof(a)) #define inf(a) memset(a,ox3f,sizeof(a)) #define ll long long #define Rep(i,a,n) for(int i=a;i<=n;i++) using namespace std; const int INF = ( 2e9 ) + 2; cons 4000 t int maxn = 1e3+10; int a[10][maxn]; vector<int> g[maxn]; int vis[maxn]; int n,k; bool check(int x,int y) { for(int i=0;i<k;i++) { if(a[i][x]>=a[i][y]) return false; } return true; } int dfs(int u) { if(vis[u]) return vis[u]; int ans=0; for(int i=0,L=g[u].size();i<L;i++) { int v=g[u][i]; ans=max(dfs(v),ans); } return vis[u]=ans+1; } int main() { scanf("%d%d",&n,&k); for(int i=0;i<k;i++) for(int j=0;j<n;j++) { int buf; scanf("%d",&buf); a[i][buf]=j; } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(check(i,j)) g[i].push_back(j); int ans=-1; for(int i=1;i<=n;i++) { ans=max(ans,dfs(i)); } printf("%d\n",ans); }
相关文章推荐
- Codeforces #264 (Div. 2) D. Gargari and Permutations
- Codeforces #264 (Div. 2) D. Gargari and Permutations
- Codeforces #264 (Div. 2) D. Gargari and Permutations(动态规划:简单)
- Codeforces Round 264(div2) C. Gargari and Bishops
- Codeforces Round #264 (Div. 2) C Gargari and Bishops 【暴力】
- Codeforces Round #264 (Div. 2) C Gargari and Bishops 【暴力】
- codeforce 263 div2D Gargari and Permutations
- codeforces 463D D. Gargari and Permutations(dp)
- 【CODEFORCES】 D. Gargari and Permutations
- Codeforces Round #264 (Div. 2) D. Gargari and Permutations 多序列LIS+dp好题
- Codeforces #264(div 2)D.Gargari and Permutations
- COdeforces Round #264 (Div. 2) C. Gargari and Bishops
- Codeforces Round #264 (Div. 2) D. Gargari and Permutations 多序列LIS+dp好题
- Codeforces #264 (Div. 2) D. Gargari and Permutations
- Codeforces #264 (Div. 2) D. Gargari and Permutations(DAG求最长路)
- Codeforces 463D. Gargari and Permutations【DP】
- Codeforces Round #179 (Div. 2) B (codeforces 296b) Yaroslav and Two Strings
- Codeforces 318 div2.D Bear and Blocks(dp,贪心)
- codeforces水题100道 第十四题 Codeforces Round #321 (Div. 2) A. Kefa and First Steps (brute force)
- [几何 模拟退火 || 随机增量法] Codeforces 442E #253 (Div. 1) E. Gena and Second Distance