题意:不说了很好懂、

这题这么水= =。。。当时竟然没有勇气暴力搜一下。昨天(好吧前天。)比赛的时候胃疼,看到这题想了一个办法就是对每一个出现最短的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+暴力。的更多相关文章

  1. HDU 4681 String(DP)

    题目链接 枚举A和B中每一段含有C的段,A的前面 后面和B前面后面,求最长公共子序.观察发现,可以预处理最长公共子序. #include <iostream> #include <c ...

  2. HDU 4681 string 求最长公共子序列的简单DP+暴力枚举

    先预处理,用求最长公共子序列的DP顺着处理一遍,再逆着处理一遍. 再预处理串a和b中包含串c的子序列,当然,为了使这子序列尽可能短,会以c 串的第一个字符开始 ,c 串的最后一个字符结束 将这些起始位 ...

  3. HDU 4681 String(2013多校8 1006题 DP)

    String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Subm ...

  4. HDU 4681 String 最长公共子序列

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4681 题意: 给你a,b,c三个串,构造一个d串使得d是a,b的子序列,并且c是d的连续子串.求d最大 ...

  5. hdu 4681 string

    字符串DP 题意:给你三个字符串a,b,c求字符串d的长度. 字符串d满足的要求:是a和b的公共子序列,c是它的子串. 定义dp1[i][j]表示a的第 i 位与b的第 j 位之前相同的子序列长度(包 ...

  6. hdu 4681(枚举+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 思路:首先预处理出串C在A,B中的所有的位置,然后从前向后求一次最长公共子序列,从后向前求一次最 ...

  7. hdu 4681 String(转载)

    #include <stdio.h> #include <string.h> #include <algorithm> #include <iostream& ...

  8. HDU 4681 String 胡搞

    设串C的第一个字母在串A中出现的位置是stA, 串C的最后一个字母在串A中出现的位置是edA. 设串C的第一个字母在串B中出现的位置是stB, 串C的最后一个字母在串B中出现的位置是edB. 求出每一 ...

  9. hdu 4123 树形DP+RMQ

    http://acm.hdu.edu.cn/showproblem.php? pid=4123 Problem Description Bob wants to hold a race to enco ...

随机推荐

  1. 获取一个表单字段中多条数据并转化为json格式

    如图需要获取下面两个li标签里面的数据,然后传给后台:而后台接收的数据格式是json的,所以需要把两个li里面的信息转化为以下格式的. {recieverName:小红,recieverPhone:1 ...

  2. Python3 计算城市距离

    利用上一篇得到的城市经纬度算城市距离 import requests from math import radians, cos, sin, asin, sqrt def geocode(addres ...

  3. [转]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 ...

  4. How can For each...

    Answer:   I understand the IEnumerator/IEnumerable methods and properties and also how they are inte ...

  5. 简单介绍--TOSCA自动化测试工具

    1.工具源自 TOSCA由公司Tricentis研发.这是一家来自奥地利的软件初创企业,专门帮助企业开发团队进行自动化软件测试.(百科) TOSCA的思想是,不用会编程的测试人员可以直接上手自动化. ...

  6. Eclipse+Spark搭建源码分析环境问题分析

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  7. c调用c++编的dll,c++调用c编写的dll,extern “C”的用法

    转自:http://blog.csdn.net/life_is_too_hard/article/details/52137271 c和c++不能直接相互调用,主要是因为c++有重载函数的功能,为了区 ...

  8. Linux学习笔记之阿里云ECS部署LAMP环境

    LAMP指Linux+Apache+MySQL/MariaDB+Perl/PHP/Python,是一组常用来搭建动态网站或者服务器的开源软件.它们本身都是各自独立的程序,但是因为常被放在一起使用,拥有 ...

  9. nginx 代理服务器配置双向证书验证

    生成证书链 用脚本生成一个根证书, 一个中间证书(intermediate), 三个客户端证书. 脚本来源于(有修改)https://stackoverflow.com/que... 中间证书的域名为 ...

  10. MySQL多版本并发控制机制(MVCC)-源码浅析

    MySQL多版本并发控制机制(MVCC)-源码浅析 前言 作为一个数据库爱好者,自己动手写过简单的SQL解析器以及存储引擎,但感觉还是不够过瘾.<<事务处理-概念与技术>>诚然 ...