HDU 4681 STRING dp+暴力。
题意:不说了很好懂、
这题这么水= =。。。当时竟然没有勇气暴力搜一下。昨天(好吧前天。)比赛的时候胃疼,看到这题想了一个办法就是对每一个出现最短的C串前后连接然后对这个串求最长公共子序列。其实优化一下就是现在的答案啊~~!!!!给赵鹏说了赵鹏说不可能这么过。。然后就没想。就这样这么水的一道题都没过!!!!桑心啊~
代码:
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
using namespace std;
char sa[];
char sb[];
char sc[];
int c[][];
int d[][];
struct node
{
int s,e;
};
int main()
{
int t;
//freopen("in.txt","r",stdin);
// freopen("out1.txt","w",stdout);
int cas;
cas = ;
scanf("%d",&t);
while(t--)
{ vector<node>vc,vd;
scanf("%s",sa+);
scanf("%s",sb+);
scanf("%s",sc+); int len1,len2,len3;
len1 = strlen(sa+);
len2 = strlen(sb+);
len3 = strlen(sc+);
int i,j;
memset(c,,sizeof(c));
memset(d,,sizeof(c)); for(i = ;i <= len1;i++)
{
for(j = ; j <= len2; j++)
{
if(sa[i] == sb[j])
c[i][j] = c[i-][j-]+;
else
c[i][j] = max(c[i-][j],c[i][j-]);
}
} for(i = len1;i>= ;i--)
{
for(j = len2; j >= ; j--)
{
if(sa[i] == sb[j])
d[i][j] = d[i+][j+]+;
else
d[i][j] = max(d[i+][j],d[i][j+]);
}
} for(i = ;i <= len1;i++)
{
int cnt;
cnt = ;
if(sa[i] == sc[])
{
for(j = i;j <= len1;j++)
{
if(sa[j] == sc[cnt])
cnt++;
if(cnt > len3)
{
struct node tmp;
tmp.s = i,tmp.e = j;
vc.push_back(tmp);
break;
}
}
}
}
for(i = ;i <= len2;i++)
{
int cnt;
cnt = ;
if(sb[i] == sc[])
{
for(j = i;j <= len2;j++)
{
if(sb[j] == sc[cnt])
cnt++;
if(cnt > len3)
{
struct node tmp;
tmp.s = i;tmp.e = j;
vd.push_back(tmp);
break;
}
}
}
}
// printf("%d %d\n",c[len1][len2],d[1][1]);
int f,r;
int ans = ;
for(i = ;i < vc.size();i++)
{
for(j= ;j < vd.size();j++)
{
if(vc[i].s == ||vd[j].s == )
f = ;
else f = c[vc[i].s-][vd[j].s-];
if(vc[i].e == len1||vd[j].e == len2)
r = ;
else
r = d[vc[i].e+][vd[j].e+];
ans = max(ans,f+r+len3);
}
// printf("%d****\n",i);
} printf("Case #%d: %d\n",++cas,ans);
//cout<<ans<<endl; } return ;
}
HDU 4681 STRING dp+暴力。的更多相关文章
- HDU 4681 String(DP)
题目链接 枚举A和B中每一段含有C的段,A的前面 后面和B前面后面,求最长公共子序.观察发现,可以预处理最长公共子序. #include <iostream> #include <c ...
- HDU 4681 string 求最长公共子序列的简单DP+暴力枚举
先预处理,用求最长公共子序列的DP顺着处理一遍,再逆着处理一遍. 再预处理串a和b中包含串c的子序列,当然,为了使这子序列尽可能短,会以c 串的第一个字符开始 ,c 串的最后一个字符结束 将这些起始位 ...
- HDU 4681 String(2013多校8 1006题 DP)
String Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Subm ...
- HDU 4681 String 最长公共子序列
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4681 题意: 给你a,b,c三个串,构造一个d串使得d是a,b的子序列,并且c是d的连续子串.求d最大 ...
- hdu 4681 string
字符串DP 题意:给你三个字符串a,b,c求字符串d的长度. 字符串d满足的要求:是a和b的公共子序列,c是它的子串. 定义dp1[i][j]表示a的第 i 位与b的第 j 位之前相同的子序列长度(包 ...
- hdu 4681(枚举+dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 思路:首先预处理出串C在A,B中的所有的位置,然后从前向后求一次最长公共子序列,从后向前求一次最 ...
- hdu 4681 String(转载)
#include <stdio.h> #include <string.h> #include <algorithm> #include <iostream& ...
- HDU 4681 String 胡搞
设串C的第一个字母在串A中出现的位置是stA, 串C的最后一个字母在串A中出现的位置是edA. 设串C的第一个字母在串B中出现的位置是stB, 串C的最后一个字母在串B中出现的位置是edB. 求出每一 ...
- hdu 4123 树形DP+RMQ
http://acm.hdu.edu.cn/showproblem.php? pid=4123 Problem Description Bob wants to hold a race to enco ...
随机推荐
- 安卓和ios的区别
安卓不闪退,会卡死,有几率复活,也有可能要强制重启,iOS默认闪退,强制重启的几率小很多. 总的来说,如果要深层次挖掘Android的漏洞就要明白linux内核安全,如果要挖身深层次挖掘iOS的漏洞就 ...
- Apple Pay编程指导
1.About Apple PayApple Pay是一种移动支付技术,让使用者把它们对真实的物品和服务的支付信息以一种方便和安全的方式给你. 对于在app中给出的数字物品和服务,可查看In-App ...
- Angular 笔记系列(二)数据绑定
数据绑定这块儿没啥说的,简单两个例子带过了. Hello World: <!DOCTYPE html> <html ng-app> <head> <title ...
- kubernetes rabbitmq 集群安装配置
生成secret来保存relang-cookie: secret.yml文件: apiVersion: v1kind: Secretmetadata: name: rabbit-cookietype: ...
- WPS宏不可用解决方法
在使用WPS Office过程中,遇见宏不可用,在启用宏的过程中提示获取VBA插件 解决方法: 1.下载VBA插件,下载地址:https://pan.baidu.com/s/1LqBmXw37U0km ...
- java 加密解密
https://www.cnblogs.com/kingsleylam/category/752546.html <java加密与解密艺术>代码可抄袭.
- Java RSA公钥加密,私钥解密算法的尝试
https://www.cnblogs.com/liemng/p/6699257.html 写这篇博客其实是有点意外的,来源最初也算是入职当前这家公司算吧,由于项目要求数据几乎都进行了加密(政府项目么 ...
- java反射 - getXXX 与 getDeclaredXXX
1.getXXX 和 getDeclaredXXX java 里 Class<?> 有下面这些方法: 类似的方法有: 2.getMethod(s) 和 getDeclaredMethod( ...
- 虚拟中没有eth0
进行虚拟机的软拷贝和硬拷贝,或直接从一台机器上拷贝虚拟机硬盘文件到另一台机子的虚拟机上时,发现通过修改/etc/network/interfaces配置的IP没用,输入ifconfig,发现根本就没有 ...
- Hive表的修改Alter
1.查看创建表的信息 [show create table] hive> show create table student; OK createtab_stmt CREATE TABLE `s ...