HDU4681 String(dp)
题目链接。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <string> using namespace std; const int maxn = +; char s1[maxn], s2[maxn], s3[maxn];
int dp1[maxn][maxn], dp2[maxn][maxn];
int que1[maxn][], que2[maxn][]; void max_dp(char *s1, char *s2, int (*dp)[maxn]) {
int len1 = strlen(s1), len2 = strlen(s2); for(int i=; i<len1; i++) dp[i][] = ;
for(int i=; i<len2; i++) dp[][i] = ; for(int i=; i<=len1; i++) {
for(int j=; j<=len2; j++) {
if(s1[i-] == s2[j-]) dp[i][j] = dp[i-][j-]+;
else dp[i][j] = max(dp[i-][j], dp[i][j-]);
}
}
} void str_rev(char *s) {
int len = strlen(s);
for(int i=; i<len/; i++) swap(s[i], s[len--i]);
} int get_str(char *s1, char *s2, int (*que)[]) {
int len1 = strlen(s1), len2 = strlen(s2);
int n = ; for(int i=; i<len1; i++) {
if(s1[i] == s2[]) {
int k = , j;
for(j=i+; j<len1; j++) {
if(s1[j] == s2[k]) k++;
if(k == len2) break;
}
if(k == len2) {
que[n][] = i;
que[n++][] = j;
}
}
} return n;
} int main() {
int T; scanf("%d", &T);
for(int kase=; kase<=T; kase++) {
scanf("%s %s %s", s1, s2, s3); int len1 = strlen(s1);
int len2 = strlen(s2);
int len3 = strlen(s3); int n1 = get_str(s1, s3, que1);
int n2 = get_str(s2, s3, que2); max_dp(s1, s2, dp1); str_rev(s1);
str_rev(s2); max_dp(s1, s2, dp2); int ans = ;
for(int i=; i<n1; i++) {
for(int j=; j<n2; j++) {
ans = max(ans, dp1[que1[i][]][que2[j][]]+dp2[len1-que1[i][]-][len2-que2[j][]-]+len3);
}
} printf("Case #%d: ", kase);
printf("%d\n", ans);
} return ;
}
HDU4681 String(dp)的更多相关文章
- hdu 4055 Number String(dp)
Problem Description The signature of a permutation is a string that is computed as follows: for each ...
- hdu5707-Combine String(DP)
Problem Description Given three strings a, b and c , your mission is to check whether c is the combi ...
- CodeForces - 710E Generate a String (dp)
题意:构造一个由a组成的串,如果插入或删除一个a,花费时间x,如果使当前串长度加倍,花费时间y,问要构造一个长度为n的串,最少花费多长时间. 分析:dp[i]---构造长度为i的串需要花费的最短时间. ...
- HDU4055 - number string(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4055 思路:dp[i][j]表示处理前i个字符以j结尾可能的序列数. 当a[i]=='I'时,dp[i ...
- HDU 4055:Number String(DP计数)
http://acm.hdu.edu.cn/showproblem.php?pid=4055 题意:给一个仅包含‘I','D','?'的字符串,’I'表示前面的数字比后面的数字要小(Increase升 ...
- Educational Codeforces Round 16 E. Generate a String (DP)
Generate a String 题目链接: http://codeforces.com/contest/710/problem/E Description zscoder wants to gen ...
- HDU 5707 Combine String (DP,LCS变形)
题意:给定三个字符串,问你第三个是不是由第一个和第二个组成的. 析:当时比赛是没有做出来啊...一直WA,就是没有判断长度,第一个和第二个和是不是和第三个一样,这个忘记... 我们用d[i][j]表示 ...
- HDU-4681 String 枚举+DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 题意:给A,B,C三个串,求一个最长的串D,满足D是A和B的subsequence,C是D的su ...
- HUST 4681 String (DP LCS变形)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 题目大意:给定三个字符串A,B,C 求最长的串D,要求(1)D是A的字序列 (2)D是B的子序列 ...
随机推荐
- CentOS 6.3 源码安装LAMP(Linux+Apache+Mysql+Php)环境
一.简介 什么是LAMP LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而>言都是在它所 ...
- JavaScript - 运算符 == 与 === 的区别
在 JavaScript 中,运算符 == 与 === 都是用来比较两个值是否相等.但是这两个操作符有个不同的地方:== 并不表示严格相等,而 === 表示进行严格比较,不仅比较值,而且会比较变量的类 ...
- js实现图片自动切换效果。
js实现图片自动切换效果,简单实用,原谅我只是一只小菜鸟还在学大神天天写博文装逼. <script language="javascript"> setInterval ...
- Android-自定义多TAB悬浮控件实现蘑菇街首页效果
因为项目的一些需求需要用到此种展现方式. 找了市面上大部分有类似功能的应用. 基本思路嵌套ScrollView 转换事件分发给listview 实现. 但是此种方案有个缺点. 在ScrollVie ...
- ASP.NET网站实现中英文转换(本地化资源)
主要内容: 1. 简单例子 2. 进一步认识Localization 3. 语言转换 4. 解决方案 一. 简单例子 下面通过一个简单的例子来说明利用Localization来实现本地化是那么的简单, ...
- CI框架多目录设置
1,设置目的,前台与后台实现独立目录管理 2.通过http://www.myci.com 访问前台,通过http://www.myci.com/admin 访问后台, 多目录的意思是指在同一个网 ...
- maven+jetty项目在tomcat部署
步骤1:项目打包 clean install 步骤二:拷贝war 包到tomcat下 步骤三:修改server.xml文件的端口 步骤四:启动tomcat,注意jetty的项目是不需要带项目名的,To ...
- 【BZOJ2038】【莫队】小z的袜子
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...
- removing right click context menu options on recycle bin
Humpty is correct as always First you might want to make a backup of the reg key then remove the Wa ...
- ie11下,插入框架Html
if(navigator.userAgent.indexOf("MSIE")>0 || (navigator.userAgent.indexOf("Trident& ...