HDOJ 5791 Two(dp—求两个序列的公共序列个数)
来源:互联网 发布:圆形进度条js代码 编辑:程序博客网 时间:2024/06/05 21:04
Two
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 356 Accepted Submission(s): 140
Problem Description
Alice gets two sequences A and B. A easy problem comes. How many pair of sequence A' and sequence B' are same. For example, {1,2} and {1,2} are same. {1,2,4} and {1,4,2} are not same. A' is a subsequence of A. B' is a subsequence of B. The subsequnce can be not continuous. For example, {1,1,2} has 7 subsequences {1},{1},{2},{1,1},{1,2},{1,2},{1,1,2}. The answer can be very large. Output the answer mod 1000000007.
Input
The input contains multiple test cases.
For each test case, the first line cantains two integersN,M(1≤N,M≤1000) . The next line contains N integers. The next line followed M integers. All integers are between 1 and 1000.
For each test case, the first line cantains two integers
Output
For each test case, output the answer mod 1000000007.
Sample Input
3 21 2 32 13 21 2 31 2
Sample Output
23
题解:简单dp,板子题,弱逼的我找了板子才A掉。蔡茹苟
代码如下:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define maxn 1010int a[maxn],b[maxn];long long dp[maxn][maxn];const int mod=1000000007;int main(){int n,m,i,j;while(scanf("%d%d",&n,&m)!=EOF){for(i=1;i<=n;++i)scanf("%d",&a[i]);for(i=1;i<=m;++i)scanf("%d",&b[i]);dp[0][0]=dp[1][0]=dp[0][1]=0;memset(dp,0,sizeof(dp));for(i=1;i<=n;++i){for(j=1;j<=m;++j){if(a[i]!=b[j])dp[i][j]=(dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+mod)%mod;//这个地方可能会出现负数,要加mod elsedp[i][j]=(dp[i-1][j]+dp[i][j-1]+1)%mod;}}printf("%I64d\n",dp[n][m]);}return 0;}
0 0
- HDOJ 5791 Two(dp—求两个序列的公共序列个数)
- HDU 5791 Two (dp求公共子序列个数)
- (HDU 5791)Two <DP求公共子序列的个数> 多校训练5
- hdu5791 Two(dp求公共子序列个数)
- HDOJ 5791 Two(公共子序列的数目)
- 两个序列中公共子序列的个数
- 求两个字符序列的最大公共子序列
- 利用矩阵求两个序列的最长公共子序列
- 求两个序列的最长公共子序列
- HDU 1159 Common Subsequence (求两个串的最长公共子序列 dp)
- 公共子序列的个数
- 求两个字符串的最长公共子序列的数量
- nyoj+最长回文数,复制一个反转序列,然后求两个序列的最长公共字序列+也可以用区间dp做
- 求两个字符串的最长公共子序列
- 求两个字符串的最长公共子序列
- poj1458求两个串的最大公共子序列咯
- poj1458Common Subsequence(求两个字符串的最长公共子序列)
- 求两个字符串的最长公共子序列
- leetcode 69 sqrt(x)
- Caffe-Windows下遇到过的问题、技巧、解决方案
- leetcode Course Schedule
- windows安装TortoiseGit详细使用教程【基础篇】
- 关于VBA编辑word自动生成报告
- HDOJ 5791 Two(dp—求两个序列的公共序列个数)
- hdu1402-大数相乘
- HDU 2444 The Accomodation of Students-二分图判断&二分匹配
- 离散事件模拟-银行管理
- spark出现task org.apache.spark.SparkException: Task not serializable
- android开发之感想
- [BZOJ4569][Scoi2016]萌萌哒(并查集+st表)
- 安卓实现自动提示选择邮箱
- Java集合--自定义受限制泛型实例