HDU 2087 HDU 1867 KMP标准模板题
贴两道题,其中HDU2087是中文题,故不解释题目,
思路是,一发KMP,但是特别处理最后一位的失配边为0,这样就可以保证“判断完成但是不多判断”。
第二题,很毒瘤的题,要求求出,给定字符串A,B能够缠到一起组成的子字符串长度“长度较小且字典序较小”的一个。。。。要求,假设str1+str2组成答案,则str1的后缀和str2的前缀中相同的部分,只出现一次。。于是做法就是,两法KMP,特判答案咯。。。然而。。。。此题。。最有难度的地方是读懂提。。。。看了别人的提解读懂得。。。。
2087AC代码:
#include<bits/stdc++.h>
using namespace std; const long long MAXN=;
long long f[MAXN];
char str1[MAXN];
long long len1;
char str2[MAXN];
long long len2; bool init()
{
cin>>str1;
if(str1[]=='#')return false;
cin>>str2;
len1=strlen(str1);
len2=strlen(str2);
f[]=;
f[]=;
for(int i=;i<len2;++i)
{
int j=f[i];
while(j&&str2[i]!=str2[j])j=f[j];
f[i+]= str2[i]==str2[j]? j+:;
}f[len2]=;
return ;
} int main()
{
while(init())
{
long long summ=;
int j=f[];
for(int i=;i<=len1;++i)
{
if(j==len2)summ++;
while(j&&str1[i]!=str2[j])j=f[j];
j= str1[i]==str2[j]? j+:;
}cout<<summ<<"\n";
} }
1867AC代码:
#include<bits/stdc++.h>
using namespace std;
const long long MAXN=;
class str
{
public:
int f[MAXN];
char s[MAXN];
int len;
};
str s1,s2;
string ans1,ans2;
void init()
{
s1.f[]=;s1.f[]=;
s2.f[]=;s2.f[]=;
ans1.clear();
ans2.clear();
s1.len=strlen(s1.s);
s2.len=strlen(s2.s);
for(int i=;i<s1.len;++i)
{
int j=s1.f[i];
while(j&&s1.s[i]!=s1.s[j])j=s1.f[j];
s1.f[i+]= s1.s[i]==s1.s[j] ? j+:;
}
for(int i=;i<s2.len;++i)
{
int j=s2.f[i];
while(j&&s2.s[i]!=s2.s[j])j=s2.f[j];
s2.f[i+]= s2.s[i]==s2.s[j] ? j+:;
}
} bool com(string &str1,string &str2)
{
int len=min(str1.length(),str2.length());
for(int i=;i<len;++i)
{
if(str1[i]!=str2[i])
{
if(str1[i]<str2[i])break;
else return false;
}
}
return ;
}
int main()
{
cin.sync_with_stdio(false);
while(cin>>s1.s>>s2.s)
{
init();
int j=;
for(int i=;i<s1.len;++i)
{
ans1.push_back(s1.s[i]);
while(j&&s1.s[i]!=s2.s[j])j=s2.f[j];
j= s1.s[i]==s2.s[j]? j+:;
}
for(;j<s2.len;++j)
{
ans1.push_back(s2.s[j]);
}
j=;
for(int i=;i<s2.len;++i)
{
ans2.push_back(s2.s[i]);
while(j&&s2.s[i]!=s1.s[j])j=s1.f[j];
j= s2.s[i]==s1.s[j]? j+:;
}
for(;j<s1.len;++j)
{
ans2.push_back(s1.s[j]);
}
if(ans1<=ans2&&ans1.length()<=ans2.length())
{
cout<<ans1<<"\n";
}else cout<<ans2<<"\n";
}
return ;
}
HDU 2087 HDU 1867 KMP标准模板题的更多相关文章
- hdu 1711 KMP算法模板题
题意:给你两个串,问你第二个串是从第一个串的什么位置開始全然匹配的? kmp裸题,复杂度O(n+m). 当一个字符串以0为起始下标时.next[i]能够描写叙述为"不为自身的最大首尾反复子串 ...
- HDU 2602 - Bone Collector - [01背包模板题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 Many years ago , in Teddy’s hometown there was a ...
- HDU 2544 最短路 【Dijkstra模板题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...
- 【网络流#2】hdu 1533 - 最小费用最大流模板题
最小费用最大流,即MCMF(Minimum Cost Maximum Flow)问题 嗯~第一次写费用流题... 这道就是费用流的模板题,找不到更裸的题了 建图:每个m(Man)作为源点,每个H(Ho ...
- HDU 1874 畅通工程续(模板题——Floyd算法)
题目: 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰 ...
- HDU 1301-Jungle Roads【Kruscal】模板题
题目链接>>> 题目大意: 给出n个城市,接下来n行每一行对应该城市所能连接的城市的个数,城市的编号以及花费,现在求能连通整个城市所需要的最小花费. 解题分析: 最小生成树模板题,下 ...
- 敌兵布阵 HDU - 1166 (树状数组模板题,线段树模板题)
思路:就是树状数组的模板题,利用的就是单点更新和区间求和是树状数组的强项时间复杂度为m*log(n) 没想到自己以前把这道题当线段树的单点更新刷了. 树状数组: #include<iostrea ...
- HDU 2079 选课时间(母函数模板题)
链接:传送门 思路:母函数模板题 /************************************************************************* > Fil ...
- hdu 3549 Flow Problem 最大流问题 (模板题)
Flow Problem Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
随机推荐
- JavaSE_5_线程
1.多线程中的i++线程安全吗?为什么? 不安全,因为每个线程都有自己的工作内存,每个线程需要对共享变量操作时必须把共享变量从主内存中加载到自己的工作内存,等完成操作后再保存到内存中,如果一个线程运算 ...
- 《Head First 设计模式》之单件模式
单件模式(Singleton) ——确保一个类只有一个实例,并提供全局访问点. 有一些对象其实我们只需要一个,比如线程池.缓存.对话框.处理偏好设置和注册表的对象.日志对象.如果制造出多个实例,就会导 ...
- fish 常用主题推荐
在安装fish的前提下 omf install zish omf theme zish zish
- GitLab关于SSH的使用
SSH Git是分布式版本控制系统,这意味着您可以在本地工作,但您也可以将更改共享或“推送”到其他服务器.在将更改推送到GitLab服务器之前,您需要一个用于共享信息的安全通信通道. SSH协议提供此 ...
- safenet 超级狗 加密狗
1.CS程序可以工作正常: 2.BS程序,服务器验证狗,IIS设置32位兼容方法1: dog.SetLibPath,设置查找依赖dll路径: 方法2:默认系统目录 C:\Windows\SysWOW6 ...
- k8s之configmap配置中心
记录在石墨笔记中,懒得再粘贴了,大家直接移步下面地址 https://shimo.im/docs/ktNM72QPweEEkcWg/
- 详细讲解:tp3.2.3生成验证码并进行验证(ajax校验返回及自定义返回)
TP3.2.3的验证码也是比较经典的小功能,框架对这个小功能的封装还是比较完美的,废话不多说,开始记录 1.总体效果: (1)初始界面 (2)自定义的返回校验效果: (3)ajax的校验返回: 2.代 ...
- [转贴] ASP.NET -- Web Service (.asmx) & JSON
[转贴] ASP.NET -- Web Service (.asmx) & JSON 以前没做过,但临时被要求 ASP.NET Web Service 要传回 JSON格式 找到网络上两篇好文 ...
- 如何处理CloudFoundry应用部署时遇到的254错误
使用SAP云平台的CloudFoundry部署应用: 在cockpit遇到错误信息:instance: a0abe2b5-7623-4cf1-4c65-0c79, index: 0, exit_des ...
- SVN和Git的区别
这个地方就简单介绍一下 svn 的模式是: 1.写代码. 2.从服务器拉回服务器的当前版本库,并解决服务器版本库与本地代码的冲突. 3.将本地代码提交到服务器. Git分布式版本管理的模式是: 1.写 ...