[題解]hdu_6412公共子序列
https://blog.csdn.net/nka_kun/article/details/81902421
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
using namespace std;
const ll mod=;
const int maxn=;
int n,k,T,cnt;
ll f[maxn];
vector<int>v[][];
struct node{
int p[];
// bool operator <(const node&x)const{
// for(int i=1;i<=k;i++)
// if(p[i]<=x.p[i])return 0;
// return 1;
// }
friend bool operator <(node x,node y){
for(int i=;i<=k;i++)
if(x.p[i]>=y.p[i])return ;
return ;
}
}a[maxn],b;
void dfs(int x,int p){
if(x==k+)a[++cnt]=b;
else{
int s=v[x][p].size();
for(int i=;i<s;i++){
b.p[x]=v[x][p][i];
dfs(x+,p);
}
}
}
bool cmp(node a,node b){
for(int i=;i<=k;i++)
if(a.p[i]!=b.p[i])return a.p[i]<b.p[i];
return ;
}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d",&k,&n);
for(int i=;i<=k;i++)
for(int j=;j<=n;j++)v[i][j].clear();
cnt=;
for(int i=;i<=k;i++)
for(int j=,x;j<=n;j++)scanf("%d",&x),v[i][x].pb(j);//每個數出現位置
for(int i=;i<=n;i++)
dfs(,i); sort(a+,a+cnt+,cmp); for(int i=;i<=cnt;i++)f[i]=;
for(int i=;i<=cnt;i++)
for(int j=;j<i;j++)
if(a[j]<a[i])
(f[i]+=f[j])%=mod;
ll ans=;
for(int i=;i<=cnt;i++)
(ans+=f[i])%=mod;
printf("%lld\n",ans);
}
}
[題解]hdu_6412公共子序列的更多相关文章
- 经典递归问题:0,1背包问题 kmp 用遗传算法来解背包问题,hash表,位图法搜索,最长公共子序列
0,1背包问题:我写笔记风格就是想到哪里写哪里,有很多是旧的也没删除,代码内部可能有很多重复的东西,但是保证能运行出最后效果 '''学点高大上的遗传算法''' '''首先是Np问题的定义: npc:多 ...
- Python-求解两个字符串的最长公共子序列
一.问题描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence).比如字符串1:BDCABA:字符串2:ABCBDAB.则这两个字符串的最长公共子序列长 ...
- 动态规划法解最长公共子序列<算法分析>
一.实验内容及要求 1.要求按动态规划法原理求解问题: 2.要求在20以内整数随机产生两个序列数据: 3.要求显示随机产生的序列及最长公共子序列.二.实验步骤 1.随机产生数列: 2.输出随机序列: ...
- UVa 111 - History Grading (by 最长公共子序列 )
History Grading Background Many problems in Computer Science involve maximizing some measure accor ...
- 05_最长公共子序列问题(LCS)
问题来源:刘汝佳<算法竞赛入门经典--训练指南> P60 问题7: 问题描述:给两个子序列A和B,求长度最大的公共子序列.比如1,5,2,6,8,和2,3,5,6,9,8,4的最长公共子序 ...
- LCS最长公共子序列(最优线性时间O(n))
这篇日志主要为了记录这几天的学习成果. 最长公共子序列根据要不要求子序列连续分两种情况. 只考虑两个串的情况,假设两个串长度均为n. 一,子序列不要求连续. (1)动态规划(O(n*n)) (转自:h ...
- 算法导论-动态规划(最长公共子序列问题LCS)-C++实现
首先定义一个给定序列的子序列,就是将给定序列中零个或多个元素去掉之后得到的结果,其形式化定义如下:给定一个序列X = <x1,x2 ,..., xm>,另一个序列Z =<z1,z2 ...
- 最长公共子序列(LCS问题)
先简单介绍下什么是最长公共子序列问题,其实问题很直白,假设两个序列X,Y,X的值是ACBDDCB,Y的值是BBDC,那么XY的最长公共子序列就是BDC.这里解决的问题就是需要一种算法可以快速的计算出这 ...
- 算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列
出处 http://segmentfault.com/blog/exploring/ 本章讲解:1. LCS(最长公共子序列)O(n^2)的时间复杂度,O(n^2)的空间复杂度:2. 与之类似但不同的 ...
随机推荐
- 剑指Offer:反转链表【24】
剑指Offer:反转链表[24] 题目描述 输入一个链表,反转链表后,输出新链表的表头. 解题分析 这道题我才发现我是属于那种真的笨,图都画出来了流程写不出来.看了别人的代码,总觉得自己差一步. 这也 ...
- MongoDB学习笔记(1):MongoDB的安装和说明
MongoDB学习笔记(1):MongoDB的安装和说明 快速开始 下载地址 官网下载: https://www.mongodb.com/download-center?jmp=nav#communi ...
- Struts status
#status.odd 是否奇数行 #status.count 当前行数 #status.index 当前行的序号,从0开始[#status.count=# ...
- iOS 第三方登录之 QQ登录
一. 首先需要下载腾讯qq登录所需的库,下载地址是http://open.qq.com/ . 需要用到的有TencentOpenAPI.framework 和TencentOpenApi_IOS_Bu ...
- MongoDB 倾向于将数据都放在一个 Collection 下吗?
不是这样的. Collection 的单个 doc 有大小上限,现在是 16MB,这就使得你不可能把所有东西都揉到一个 collection 里.而且如果 collection 结构过于复杂,既会影响 ...
- MT6737 Android N 平台 Audio系统学习----录音到播放录音流程分析
http://blog.csdn.net/u014310046/article/details/54133688 本文将从主mic录音到播放流程来进行学习mtk audio系统架构. 在AudioF ...
- java后台获取cookie里面值得方法
String admissionNo = ""; //得到所有的cookies Cookie[] cookies = this.getRequest().getCookies(); ...
- AttributeError: module 'tensorflow' has no attribute 'sub'
官方的例子:运行之后出现以下错误 # 进入一个交互式 TensorFlow 会话. import tensorflow as tf sess = tf.InteractiveSession() x = ...
- codeforces 463C. Gargari and Bishops 解题报告
题目链接:http://codeforces.com/contest/463/problem/C 题目意思:要在一个 n * n 大小的棋盘上放置两个bishop,bishop可以攻击的所有位置是包括 ...
- windows 下python搭建环境
一.python安装 1,首先访问https://www.python.org/downloads/windows/去下载python版本. 2. 选择3.5版本,installer文件类型(因为3. ...