CF25E:Test——题解
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——题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- 关于 Windows 10 字体安装目录的问题
不知从什么时候开始,本人台式机的Win10系统在安装字体的时候并不是安装到C:\Windows\Fonts目录中,而是安装到%USERPROFILE%\AppData\Local\Microsoft\ ...
- 180606-Linux下jdk中文乱码问题解决
文章链接:https://liuyueyi.github.io/hexblog/2018/06/06/180606-Linux下jdk中文乱码问题解决/ linux下jdk中文乱码问题解决 之前遇到过 ...
- 180531-Spring中JavaConfig知识小结
原文链接:Spring中JavaConfig知识小结/ Sring中JavaConfig使用姿势 去掉xml的配置方式,改成用Java来配置,最常见的就是将xml中的 bean定义, scanner包 ...
- web自动化原理揭秘
做过两年自动化测试的小伙伴说web自动化测试真的不难,无非就是一些浏览器操作,页面元素操作,常规的情况很容易处理,再学一学特殊元素的处理,基本就能应付项目的测试了. 这个话倒没错,但是真正要学好自动化 ...
- mpvue笔记
简介: mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,为小程序开发引入 Vue.js 开发体验 我觉得就像scss一样,写的时候方便,最后还是要转成css文件 搭建 ...
- Bootstrap框架(图标)
Glyphicons 字体图标 所有可用的图标 包括250多个来自 Glyphicon Halflings 的字体图标.Glyphicons Halflings 一般是收费的,但是他们的作者允许 Bo ...
- Hybrid APP基础篇(五)->JSBridge实现示例
说明 JSBridge实现示例 目录 前言 参考来源 楔子 JS实现部分 说明 实现 Android实现部分 说明 JSBridge类 实现 Callback类 实现 Webview容器关键代码 实现 ...
- “今日校园” App 用户体验分析
一.背景 为进一步提升信息化应用水平,更好的服务师生,南通大学智慧校园移动端APP“今日校园”定于11月5日正式上线运行.登陆APP可浏览学校新闻.校园生活.各部门微信公众号等内容,查看校内通知.校内 ...
- 自学系列--git的基础简介
上学期第一次接触git,感觉挺难的,我们都知道这个非常重要,自己对git也自学了一段时间,下面这是对自学内容的总结,拿出来和大家一块交流一下,让我们一起成长吧! 一 git简介 Git是一个开源的分布 ...
- java — 垃圾回收
1. 垃圾回收的意义 在java中,当没有对象指向原先分配给某个对象的内存的时候,这片内存就变成了垃圾,JVM的一个系统级线程就会自动释放这个内存块,垃圾回收意味着程序不再需要的对象是“无用的信息”, ...