Light OJ 1420 - Subsequences forming Strings (DP)
来源:互联网 发布:剑三花太捏脸数据 编辑:程序博客网 时间:2024/06/04 20:04
解析:
设dp[i][j][k][0]为用A[1...j]和B[1...k]构成C[1...i]且最后一个字母是从A中取得的方案数。
设dp[i][j][k][0]为用A[1...j]和B[1...k]构成C[1...i]且最后一个字母是从B中取得的方案数。状态转移方程:
dp[i][j][k][0] = (dp[i][j-1][k][0] + (s[2][i]==s[0][j]?(i!=1?(dp[i-1][j-1][k][0]+dp[i-1][j-1][k][1]):1):0))%MOD;
dp[i][j][k][1] = (dp[i][j][k-1][1] + (s[2][i]==s[1][k]?(i!=1?(dp[i-1][j][k-1][0]+dp[i-1][j][k-1][1]):1):0))%MOD;
[code]:
#include<cstdio>#include<cstring>using namespace std;typedef long long LL;const LL MOD = 1e9+7;char s[3][105];int n,m1,m2;LL dp[105][105][105][2];void sol(){ int i,j,k; for(i = 1;i <= n;i++){ for(j = 0;j <= m1;j++){ for(k = 0;k <= m2;k++){ if(j) dp[i][j][k][0] = (dp[i][j-1][k][0] + (s[2][i]==s[0][j]?(i!=1?(dp[i-1][j-1][k][0]+dp[i-1][j-1][k][1]):1):0))%MOD; if(k) dp[i][j][k][1] = (dp[i][j][k-1][1] + (s[2][i]==s[1][k]?(i!=1?(dp[i-1][j][k-1][0]+dp[i-1][j][k-1][1]):1):0))%MOD; } } } LL ans = dp[n][m1][m2][0]+dp[n][m1][m2][1]; ans = (ans%MOD+MOD)%MOD; printf("%lld\n",ans);}int main(){ int i,j,cas; scanf("%d",&cas); for(int T=1;T<=cas;T++){ scanf("%s%s%s",s[0]+1,s[1]+1,s[2]+1); m1 = strlen(s[0]+1); m2 = strlen(s[1]+1); n = strlen(s[2]+1); printf("Case %d: ",T); sol(); } return 0;}
0 0
- Light OJ 1420 - Subsequences forming Strings (DP)
- Light OJ 1236 Pairs Forming LCM
- Light OJ 1085 - All Possible Increasing Subsequences
- light oj 1236 Pairs Forming LCM(整数分解)
- [lcm本质] light oj 1236 Pairs Forming LCM
- light oj 1032 数位DP
- light OJ 1205 数位DP
- light OJ 1068 数位DP
- light oj 1140 数位dp
- light oj 1422,区间dp
- Light OJ 1231(背包dp)
- light oj 1068(数位dp)
- light oj 1422(区间dp)
- light oj 1025 区间dp
- light oj 1032(数位dp)
- Light OJ 1038(概率DP)
- Light OJ 1031 区间dp
- light oj 1004 水DP
- Github建立自己的个人网站,不需要买域名啦!
- Code Forces 644B Processing Queries
- openstack中region、az、host aggregate、cell 概念
- 一个求迷宫入口到出口最近距离的程序 JAVA版本
- ios多线程操作(四)—— GCD核心概念
- Light OJ 1420 - Subsequences forming Strings (DP)
- 远程推送详解
- AIDL
- cocos2dx+lua注册事件函数详解
- ios多线程操作(五)—— GCD串行队列与并发队列
- 百度地图之初步使用实践
- Code Forces 644A Parliament of Berland
- Linux的lshw命令
- ios多线程操作(六)—— GCD全局队列与主队列