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. Bing wallpaper api

    list: http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-cn idx:-1为明天,1为 ...

  2. ubuntu 14.04 lts LAMP配置

    一.目标 创建服务器环境,主要包括:Apache2.4.7 serverPHP 5.5.9Mysql 5.5.49扩展:MemcacheMcrypt 二.准备工作 1.服务器系统版本 Ubuntu s ...

  3. hdu1106 排序(字符串分割,strtok+sscanf)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  4. linux基础——文件挂载,lamp安装

    一. 文件挂载 lsblk -f 显示文件系统信息 mount -t vfat UUID="ffffffffff" /mnt   挂载到/mnt目录 Linux针对于各式U盘挂载方 ...

  5. mysql新手入门随笔4

    40.子查询:出现在其他SQL语句里的SELECT语句 例如:SELECT sname,mark FROM student WHERE mark = (SELECT max(mark) FROM st ...

  6. Android softkeyboard 和 其他界面关系 softInputMode

    转 : http://blog.csdn.net/xww810319/article/details/17397429 and http://blog.csdn.net/harryweasley/ar ...

  7. 【20180807模拟测试】tree

    题目描述 或许会传送失败的传送门 #分析 考虑如何才能让白边显得更(不)重要,即在每条白边上(加上)减去一个值. 我们可以二分这个值,然后用寻常方法做最小生成树.统计在此最小生成树里有多少白 边. 然 ...

  8. jmeter使用复习

    多终端进程: 配置客户端远程的ip地址和port 在客户端jmeter安装目录的bin目录下,修改配置文件 jmeter.properties 默认的remote_hosts 的值:(将肉鸡的地址加入 ...

  9. docker容器学习笔记

    docker是通过内核虚拟化技术来提供容器的资源隔离与安全保障. docker组成: docker client.docker server.docker组件(镜像(image).容器(contain ...

  10. 五:ResourceManager High Availability RM 高可用

    RM有单点失败的风险,但是可以做HA.  RMs HA通过master/standby这种结构实现,一个master是active的,其它standby是inactive的.可能通过命令行切换主备节点 ...