https://vjudge.net/problem/CodeForces-25E

题目大意:给三个字符串,求最小串,使得前三个串都是它的子串。

————————————————

这题虽然是看哈希的时候做的,但上网一查啊全是KMP。

所以果断用KMP做啦!

(话说网上的题解长得都一模一样一个字都没改所以就不贴了)

对于三个串共六种排法,排列组合一下然后在把他们重合的部分减去就会是答案。

而发现对于两个字符串ab去重,我们有两种情况:

1.a的尾部是b的头部:

通过KMP解决,输出KMP后(即a被匹配完了)b被匹配到哪里了,即是ab重合长度。

2.b是a的子串:

上述KMP还有一个目的就是为了判断是否为子串,如果是的话,跳过b,a和下一个字符串相接。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF=;
int nxt[][]={};
bool ok[];
void getnext(int m,char s2[],int t){
int j=;
for(int i=;i<=m;i++){
while(j!=&&s2[j+]!=s2[i])j=nxt[t][j];
if(s2[j+]==s2[i])j++;
nxt[t][i]=j;
}
return;
}
int KMP(int n,int m,char s1[],char s2[],int t){
int j=,cnt=;
for(int i=;i<=n;i++){
while(j!=&&s2[j+]!=s1[i])j=nxt[t][j];
if(s2[j+]==s1[i])j++;
if(j==m){
return -;
j=nxt[t][j];
}
}
return j;
}
char s[][];
int len[];
int K[][];
int main(){
scanf("%s%s%s",s[]+,s[]+,s[]+);
len[]=strlen(s[]+);
len[]=strlen(s[]+);
len[]=strlen(s[]+);
for(int i=;i<=;i++){
getnext(len[i],s[i],i);
for(int j=;j<=;j++){
if(i==j)continue;
K[j][i]=KMP(len[j],len[i],s[j],s[i],i);
}
}
int ans=INF;
for(int i=;i<=;i++){
for(int j=;j<=;j++){
for(int k=;k<=;k++){
if(i==j||j==k||i==k)continue;
int sum=len[i]+len[j]+len[k]-K[i][j]-K[j][k];
if(K[i][j]>=&&K[j][k]>=)ans=min(ans,sum);
else{
if(K[i][j]<&&K[i][k]<)ans=min(ans,len[i]);
else if(K[i][j]<)ans=min(ans,sum+K[i][j]+K[j][k]-len[j]-K[i][k]);
if(K[j][k]<)ans=min(ans,sum+K[j][k]-len[k]);
}
}
}
}
printf("%d\n",ans);
return ;
}

CF25E:Test——题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. #3.14 Piday#我的圆周率日

    本文来自网易云社区 作者:马宝 圆周率日(Pi day) 2011年国际数学协会正式宣布,将每年的3月14日设为国际数学节,来源则是中国古代数学家祖冲之的圆周率."终极"圆周率日是 ...

  2. centos7系统配置系统用户基于ssh的google身份验证

    最近也是服务器各种被入侵,所以在安全上,要万分注意,特此记录,借助google的身份验证插件,获取动态验证码完成ssh登陆. OS: centos7 安装配置: 1. 安装epel源 yum -y i ...

  3. ElasticSearch搜索引擎在JavaWeb项目中的应用

    近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...

  4. OSG-简单模型控制

    本文转至http://www.cnblogs.com/shapherd/archive/2010/08/10/osg.html 作者写的比较好,再次收藏,希望更多的人可以看到这个文章 互联网是是一个相 ...

  5. Linux命令应用大词典-第36章 密码和证书管理

    36.1 pwdhash:密码哈希生成器 36.2 mkpasswd:生成应用于用户的新密码 36.3 keytool:密钥和证书管理工具 36.4 certutil:证书服务器管理工具 36.5 v ...

  6. 安装mysql-5.7.12-winx64

    之前安装mysql时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录,发现好多坑 1.mysql-5.7.12-winx64.zip下载 官方下载地址:http://dev.mysq ...

  7. [wirtting] top01 independent

    Do you agree or disagree with the following statement? At universities and colleges, sports and soci ...

  8. python中出现ascii编码问题的解决办法

    一劳永逸,一次性全盘解决的办法 环境变量中去设置 以centos 7为例: vim /etc/profile export PYTHONIOENCODING=utf-8 source /etc/pro ...

  9. JDK源码分析:Short.java

    Short是基本数据类型short的包装类. 1)声明部: public final class Short extends Number implements Comparable<Short ...

  10. LintCode-381.螺旋矩阵 II

    螺旋矩阵 II 给你一个数n生成一个包含1-n^2的螺旋形矩阵 样例 n = 3 矩阵为 [     [ 1, 2, 3 ],     [ 8, 9, 4 ],     [ 7, 6, 5 ] ] 标 ...