2016多校训练Contest5: 1011 Two hdu5791
2016-08-03 18:20
274 查看
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 integers N,M(1≤N,M≤1000).
The next line contains N integers. The next line followed M integers. All integers are between 1 and 1000.
Output
For each test case, output the answer mod 1000000007.
Sample Input
Sample Output
直接dp[i][j]暴表示第一个数列前i项第二个前j项的相同种数
然后暴力n^2转移即可
队友写的代码
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 integers N,M(1≤N,M≤1000).
The next line contains N integers. The next line followed M integers. All integers are between 1 and 1000.
Output
For each test case, output the answer mod 1000000007.
Sample Input
3 2 1 2 3 2 1 3 2 1 2 3 1 2
Sample Output
2 3
直接dp[i][j]暴表示第一个数列前i项第二个前j项的相同种数
然后暴力n^2转移即可
队友写的代码
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <algorithm> #include <string.h> #include <iostream> #include <set> #include <map> #include <vector> #include <queue> #include <stack> using namespace std; const int INF = 2147483647; const double PI = acos(-1); /* ----------------- code ----------------- */ int a[1010],dp[1010][1010],b[1010]; const int mod = 1000000007; int main(void){ int n,m; while(scanf("%d%d",&n,&m)!=EOF){ for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=1;i<=m;i++){ scanf("%d",&b[i]); } memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ dp[i][j] = ((( (dp[i - 1][j] + dp[i][j - 1]) % mod - dp[i - 1][j - 1] ) % mod + mod) % mod + (a[i] == b[j] ? dp[i - 1][j - 1] + 1 : 0) ) % mod; } } /* for(int i=0;i<=n;i++){ for(int j=0;j<=m;j++){ printf("%d ",dp[i][j]); } printf("\n"); } */ printf("%d\n",dp [m]%mod); } return 0; }
相关文章推荐
- 2016 Multi-University Training Contest 8(2016多校训练第八场)1011
- 2016多校训练Contest5: 1001 ATM Mechine hdu5781
- 2016多校联合训练赛 第五场1011 Two hdu5791
- 2016第三场多校联盟训练1011 Teacher Bo(曼哈顿距离)
- 2016多校训练Contest5: 1012 World is Exploding hdu5792
- HDU 5867 Water problem (2016 多校训练#10 1011)
- 2016第三场多校联盟训练1011
- 2016 Multi-University Training Contest 4(2016多校训练第四场)1011
- 2016多校训练Contest5: 1004 How Many Triangles hdu5784
- 2016多校训练Contest10: 1011 Water problem hdu5867
- 2016多校训练Contest5: 1003 Divide the Sequence hdu5783
- 2016多校训练Contest8: 1011 Rikka with Parenthesis II hdu5831
- HDOJ 5744 (2016多校联合训练 Training Contest 2) Keep On Movin
- [HDU5739] Fantasia [2016 Multi-University Training Contest 2(多校联合训练2) F]
- 2016多校训练Contest4: 1010 The All-purpose Zero hdu5773
- 2016多校训练Contest7: 1008 Hearthstone hdu5816
- 2016多校训练Contest9: 1012 Less Time, More profit hdu5855
- 2017多校训练Contest2: 1011 Regular polygon hdu6055
- 2016多校联合训练contest4 1012Bubble Sort
- 2016多校训练Contest9: 1002 Best Division hdu5845