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的漏洞就 ...
- 读取Android设备的MAC地址
读取Android设备的MAC地址 AndroidUtil.java package com.csdn.android.util; import com.csdn.android.framewor ...
- 参数或变量中有语法错误。 服务器响应为: mail from address must be same as authorization user
企业qq发邮件失败,提示: 参数或变量中有语法错误. 服务器响应为: mail from address must be same as authorization user 解决办法: 登录邮箱,设 ...
- LeetCode 7. Reverse Integer 一个整数倒叙输出
潜在问题:(1)随着求和可能精度会溢出int 范围,需要使用long 来辅助判断是否溢出,此时返回 0 Assume we are dealing with an environment which ...
- spark[源码]-Pool分析
概述 这篇文章主要是分析一下Pool这个任务调度的队列.整体代码量也不是很大,正好可以详细的分析一下,前面在TaskSchedulerImpl提到大体的功能,这个点在丰富一下吧. DAGSchedul ...
- 论文笔记:多标签学习综述(A review on multi-label learning algorithms)
2014 TKDE(IEEE Transactions on Knowledge and Data Engineering) 张敏灵,周志华 简单介绍 传统监督学习主要是单标签学习,而现实生活中目标样 ...
- c++之旅:模板库中的容器
容器 C++中的容器包括array, vector, list,map,set 数组 array不可变长,创建时其大小就固定了,array中可以存储各种数据类型包括对象,不过array是在栈上分配的, ...
- AJAX POST请求中参数以form data和request payload形式在php中的获取方式
一.MINE TYPE问题: php对mime type为“application/x-www-form-urlencoded”(表单提交)和“multipart/form-data”(文件上传)的P ...
- iOS 大批量弹幕小论(粒子弹幕)
一.现状 如今直播类.视频播放器等基本都有弹幕模式. 为了保持性能和内存可控,基本是在初始化的时候生成一个Pool(Pool的容量是设定好的), 也就是利用重用机制(可以想象一下UITableView ...
- MLlib1.6指南笔记
MLlib1.6指南笔记 http://spark.apache.org/docs/latest/mllib-guide.html spark.mllib RDD之上的原始API spark.ml M ...