这题说的是给了k个串算出这k个串的最长公共子序列,这k个串每个串都是由1--n的数字组成的。

将第一串的数字按照顺序重新编号为123...n 然后后面的串按照这个编号重新标号,就转化为下面每个串大最长递增子序列的问题,然后我们对于每个串计算出后面比他大的数然后建一条边(用邻接矩阵存)然后可以判断出从a到b点是否有k-1条这样我们专门挑那些k-1条的走这样保证每个序列中都有这样最后dfs算出最长的那个

#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;
const int MAX_N = ;
int renum[MAX_N];
int edg[MAX_N][MAX_N],dp[MAX_N];
int rt[][MAX_N],ans,R,n;
bool use[MAX_N];
void dfs(int loc, int len){
ans=max(len,ans);
dp[loc]=len;
for(int i=loc+; i<=n; ++i)
if(edg[loc][i]==R&&dp[i]<len+){
dfs(i,len+);
}
}
int main()
{
int k;
while(scanf("%d%d",&n,&k)==){
for(int i =; i<=n; ++i){
scanf("%d",&rt[][i]);
renum[rt[][i]]=i;
}
R=k-;
for(int i=; i<k; ++i){
rt[i][]=;
for(int j=; j<=n; ++j){
scanf("%d",&rt[i][j]);
rt[i][j]=renum[rt[i][j]];
}
}
memset(edg,,sizeof(edg));
for(int i=; i<k; i++){
for(int j =; j<=n; ++j){
for(int t=j+; t<=n; ++t)
if(rt[i][j]<rt[i][t]) edg[rt[i][j]][rt[i][t]]++;
}
}
ans=;
memset(dp,,sizeof(dp));
dfs(,);
printf("%d\n",ans);
}
return ;
}

cf463d的更多相关文章

  1. [CF463D]Gargari and Permutations

    题目大意:给你$k(2\leqslant k\leqslant5)$个$1\sim n(n\leqslant10^3)$的排列,求它们的最长子序列 题解:将$k$个排列中每个元素的位置记录下来.如果是 ...

  2. CF463D Gargari and Permutations dp

    给定 $n<=10$ 个 $1$~$n$ 的排列,求这些排列的 $LCS$. 考虑两个排列怎么做:以第一个序列为基准,将第二个序列的元素按照该元素在第一个序列中出现位置重新编号. 然后,求一个 ...

随机推荐

  1. 【转】CCScale9Sprite和CCControlButton

    转自:http://blog.csdn.net/nat_myron/article/details/12975145 在2dx下用到了android下的.9.png图片,下面是原图   查了一下2dx ...

  2. Android 简单计算器实现源码

    1.string.xml代码 <?xml version="1.0" encoding="utf-8"?> <resources> &l ...

  3. Mac下使用Fiddler(转载园友小坦克)

    Fiddler是用C#开发的.  所以Fiddler不能在Mac系统中运行.  没办法直接用Fiddler来截获MAC系统中的HTTP/HTTPS,    Mac 用户怎么办呢? Fiddler可以允 ...

  4. 8.17 一个博客demo

    2018-8-17 18:13:27 明天周末准备整理一下看看我的博客!!! 说一下思路 1.先搭建框架 1.1 大体分成两块div 左右两部分 <div class="left&qu ...

  5. TFS二次开发04——工作区(Workspace)和映射(Mapping)

    在前面几节介绍了怎样读取TFS服务器上的项目以及文件的信息,这一节将介绍怎么建立服务器和本地的映射(Mapping). 引用命名空间 usingMicrosoft.TeamFoundation.Cli ...

  6. Java中-classpath和路径的使用

    javac -classpath的使用: javac:如果当前你要编译的java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加 ...

  7. 南阳理工大学oj 题目15 括号匹配(二)

    括号匹配(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:6   描述 给你一个字符串,里面只包含"(",")","[&qu ...

  8. hihocoder 1320 - 压缩字符串 - [hiho一下160周]

    这道题目可以说是一道非常好非常一颗赛艇的DP题了. 需要注意的是,其中情形3),字符串必然能完全转化为 N(str)形式,如果有N(str1)M(str2)等等另外样式,应该首先使用拼接形式对其进行划 ...

  9. re表达式替换掉"\n\t\r”字符

    使用re来将一些字符替换掉,比如替换为空: import re s = "这是一个例子\n,我们的祖国" re.sub("[\n\t\r]", "&q ...

  10. 添加融云sdk报错 link command -v

    在xcode 文件夹下用add group 就可以了,不需要在project 里面添加依赖库