HDU 4681 String dp
来源:互联网 发布:大数据产业联盟 编辑:程序博客网 时间:2024/04/29 12:49
????:??
??:
??a,b,c?,??????????d?
??d??ab?????,??c??d????
????d???????
??:
????1000,???????????a????????b??????
????ansL + lenc + ansR
ansL??ab???????????,ansR?????????????????
lenc????????????????
???????n^2?????????
???????????
//HDU 4681 O(n^2)#include <bits/stdc++.h>using namespace std;const int maxn = 1050;int dp1[maxn][maxn], dp2[maxn][maxn];int l1[maxn], l2[maxn], len1, len2, len3;char s1[maxn], s2[maxn], s3[maxn];void update(int &x, int y){x = max(x, y);}void pre_deal(){ for(int i = 1; i <= len1; i++){ int l = 1; for(int j = i; j <= len1; j++){ if(s1[j] == s3[l]) l++; if(l > len3){ l1[i] = j; break; } } } for(int i = 1; i <= len2; i++){ int l = 1; for(int j = i; j <= len2; j++){ if(s2[j] == s3[l]) l++; if(l > len3){ l2[i] = j; break; } } } for(int i = 1; i <= len1; i++){ for(int j = 1; j <= len2; j++){ if(s1[i] == s2[j]){ update(dp1[i][j], dp1[i-1][j-1]+1); } update(dp1[i][j], dp1[i-1][j]); update(dp1[i][j], dp1[i][j-1]); } } reverse(s1+1, s1+len1+1); reverse(s2+1, s2+len2+1); for(int i = 1; i <= len1; i++){ for(int j = 1; j <= len2; j++){ if(s1[i] == s2[j]){ update(dp2[i][j], dp2[i-1][j-1]+1); } update(dp2[i][j], dp2[i-1][j]); update(dp2[i][j], dp2[i][j-1]); } }}int main(){ int T, ks = 0; scanf("%d", &T); while(T--){ memset(dp1, 0, sizeof(dp1)); memset(dp2, 0, sizeof(dp2)); memset(l1, -1, sizeof(l1)); memset(l2, -1, sizeof(l2)); scanf("%s", s1+1); scanf("%s", s2+1); scanf("%s", s3+1); len1 = strlen(s1+1); len2 = strlen(s2+1); len3 = strlen(s3+1); pre_deal(); int ans = 0; for(int i = 1; i <= len1; i++){ for(int j = 1; j <= len2; j++){ if(l1[i] == -1 || l2[j] == -1) continue; update(ans, dp1[i-1][j-1]+len3+dp2[len1-l1[i]][len2-l2[j]]); } } printf("Case #%d: %d\n", ++ks, ans); } return 0;}
0 0
- HDU 4681 String(DP)
- HDU 4681 String dp
- hdu 4681 String(dp)
- 简单dp-hdu-4681-String
- 【HDU】4681 String(DP)
- HDU 4681 String (dp, LCS | 多校8)
- hdu 4681 String (DP,4级)
- hdu 4681 String(暴力&dp&LCS)
- hdu 4681 String (dp预处理+枚举)
- [DP]HDU 4055 Number String
- hdu String painter(dp)
- HDU 4055 Number String dp
- hdu 2476 String painter dp
- hdu 4909 String dp+哈希
- HDU 5707 Combine String (DP)
- HDU 4055 Number String(DP)
- HDU 4681 String(DP 最长公共子系列)
- HDU 3336 Count the string(KMP+dp)
- babel export default {}支持问题
- Android 6.0 Doze模式
- JetBrain WebStorm 注册码
- servlet基础知识
- Fragment懒加载
- HDU 4681 String dp
- Android学习(一)Android基础之用Eclipse搭建Android开发环境
- candence 16.6 win8.1 x64 破解
- cloudera data science workbench
- 【方法论】极限编程(XP)
- Struts2中关于页面和后台交换数据的理解
- 关于H5页面开发适配指南
- GYM 100971 J.Robots at Warehouse(bfs)
- Struts2 文件的上传与下载