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 ...
随机推荐
- 获取一个表单字段中多条数据并转化为json格式
如图需要获取下面两个li标签里面的数据,然后传给后台:而后台接收的数据格式是json的,所以需要把两个li里面的信息转化为以下格式的. {recieverName:小红,recieverPhone:1 ...
- Python3 计算城市距离
利用上一篇得到的城市经纬度算城市距离 import requests from math import radians, cos, sin, asin, sqrt def geocode(addres ...
- [转]VMware-Transport(VMDB) error -44:Message.The VMware Authorization Service is not running解决方案
转自:http://blog.sina.com.cn/s/blog_70c9c4b40101i01v.html 1.VMware Workstation中新建的虚拟机在开机的时候出现这种错误:Tran ...
- How can For each...
Answer: I understand the IEnumerator/IEnumerable methods and properties and also how they are inte ...
- 简单介绍--TOSCA自动化测试工具
1.工具源自 TOSCA由公司Tricentis研发.这是一家来自奥地利的软件初创企业,专门帮助企业开发团队进行自动化软件测试.(百科) TOSCA的思想是,不用会编程的测试人员可以直接上手自动化. ...
- Eclipse+Spark搭建源码分析环境问题分析
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- c调用c++编的dll,c++调用c编写的dll,extern “C”的用法
转自:http://blog.csdn.net/life_is_too_hard/article/details/52137271 c和c++不能直接相互调用,主要是因为c++有重载函数的功能,为了区 ...
- Linux学习笔记之阿里云ECS部署LAMP环境
LAMP指Linux+Apache+MySQL/MariaDB+Perl/PHP/Python,是一组常用来搭建动态网站或者服务器的开源软件.它们本身都是各自独立的程序,但是因为常被放在一起使用,拥有 ...
- nginx 代理服务器配置双向证书验证
生成证书链 用脚本生成一个根证书, 一个中间证书(intermediate), 三个客户端证书. 脚本来源于(有修改)https://stackoverflow.com/que... 中间证书的域名为 ...
- MySQL多版本并发控制机制(MVCC)-源码浅析
MySQL多版本并发控制机制(MVCC)-源码浅析 前言 作为一个数据库爱好者,自己动手写过简单的SQL解析器以及存储引擎,但感觉还是不够过瘾.<<事务处理-概念与技术>>诚然 ...