题意:给你一个主串,两个分串,要求两个分串的距离最大,两个分串的距离定义为第一个分串的最右边的字符和第二个分串的最左边的字符之间的字符数

题解:

直接kmp匹配两个分串即可

注:kmp匹配时,当分串与主串匹配成功时,j不要重新从0开始

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
#define N 100010
using namespace std;int tot,nxt1[N],nxt2[N],L=-1,R=-1;
char S[N<<2],s1[N],s2[N],s[N];int gi() {int x=0,o=1; char ch=getchar();while(ch!='-' && (ch<'0' || ch>'9')) ch=getchar();if(ch=='-') o=-1,ch=getchar();while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return o*x;
}void get_nxt1() {int n=strlen(s1+1),i,j;for(i=2; i<=n; i++) {j=nxt1[i-1];while(j && s1[j+1]!=s1[i]) j=nxt1[j];nxt1[i]=s1[j+1]==s1[i]?j+1:0;}
}void get_nxt2() {int n=strlen(s2+1),i,j;for(i=2; i<=n; i++) {j=nxt2[i-1];while(j && s2[j+1]!=s2[i]) j=nxt2[j];nxt2[i]=s2[j+1]==s2[i]?j+1:0;}
}void kmp1() {int i,j=0,n=strlen(s+1),m=strlen(s1+1);for(i=1; i<=n; i++) {while(s1[j+1]!=s[i] && j) j=nxt1[j];if(s1[j+1]==s[i]) j++;if(j==m) {L=i;break;}}
}void kmp2() {int i,j=0,n=strlen(s+1),m=strlen(s2+1);for(i=1; i<=n; i++) {while(s2[j+1]!=s[i] && j) j=nxt2[j];if(s2[j+1]==s[i]) j++;if(j==m) R=i;}
}int main() {int i,n,k=0;scanf("%s", S+1);n=strlen(S+1);for(i=1; i<=n; i++) {if(S[i]==',') break;s[i]=S[i];}for(i++; i<=n; i++) {if(S[i]==',') break;s1[++k]=S[i];}k=0;for(i++; i<=n; i++) {s2[++k]=S[i];}get_nxt1(),get_nxt2();kmp1(),kmp2();n=strlen(s2+1);if(L==-1 || R==-1) {puts("-1");return 0;}if(L<R-n+1) {printf("%d", R-n-L);}else puts("-1");return 0;
}

转载于:https://www.cnblogs.com/HLXZZ/p/7631702.html

[10.5模拟] dis相关推荐

  1. CADD课程学习(10)-- 模拟不同体系与蛋白-蛋白相互作用(ZDOCK)

    CADD课程学习(10)-- 模拟不同体系与蛋白-蛋白相互作用(ZDOCK) 生物体的生理功能主要由细胞中的蛋白质控制和调节.其中,多数蛋白质是作为蛋白质复合物中的一部分参与细胞的代谢过程.因此,研究 ...

  2. STM32三菱FX1N,FX2N,FX3U,PLC方案 可以直接上传下载梯形图,在线监控,具有称重功能,数码管功能,可以做到10路模拟量

    STM32三菱FX1N,FX2N,FX3U,PLC方案 可以直接上传下载梯形图,在线监控,具有称重功能,数码管功能,可以做到10路模拟量,CAN总线扩展功能,4路高速脉冲功能,支持2至12轴相对位置和 ...

  3. 2018.10.9模拟赛

    2018.10.9模拟赛 T1 trade 正解:贪心 据说lyd讲过但并没有印象QAQ,考场上现推浪费了不少时间 其实就开个小根堆,每次把堆顶取出来看它是不是比当前的 a[i]a[i]a[i] 小, ...

  4. 8月10日模拟赛题解

    前言 这次模拟赛应该是暑假以来最水的一场了,然而本来至少 210210210 的分数愣是被我弄成了 141141141,原因竟然是: const int MAXM = 5e5 + 5;struct e ...

  5. 2017.10.26模拟赛day1

    -- T1为爱追寻 问题描述 历经了半年的停课之后,紫萱学姐回到了陌生又熟悉的班里,她想找到学长的位置.于是她决定采用一种高效率的寻找方法:瞎找法. 我们将学姐的班级视为一个二维平面,每个整数坐标对应 ...

  6. 10.12NOIP模拟赛

    T1 过路费 Floyd 题目: 跟所有人一样,农夫约翰以着宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦思生财之道.为了发财,他设置了一系列的规章制度,使得任何一只奶牛在农场中的道路行走,都要 ...

  7. 2017.10.23 模拟考试 (题目来自:学大伟业)

    T1 叉叉 题目描述 现在有一个字符串,每个字母出现的次数均为偶数.接下来我们把第一次出现的字母a和第二次出现的a连一条线,第三次出现的和四次出现的字母a连一条线,第五次出现的和六次出现的字母a连一条 ...

  8. jzoj P1135 【2011.12.10普及模拟】泽泽在中国

    题目描述 众所周知,在中国有个地方叫"万里长城". 泽泽一天后山玩,在捉蟋蟀的时候,忽然看见一个奇怪的洞.泽泽好奇,就钻了进去,结果-- 泽泽来到中国万里长城上.长城的城墙很高,泽 ...

  9. 作业Week9、10+月模拟题3、4+CSP3、4+限时大模拟10、14

    CSP3 A-瑞神的序列 1.题意:瑞神的数学一向是最好的,连强大的咕咕东都要拜倒在瑞神的数学水平之下,虽然咕咕东很苦 恼,但是咕咕东拿瑞神一点办法都没有. 5.1期间大家都出去玩了,只有瑞神还在孜孜 ...

最新文章

  1. 用户表单事件(focus事件)
  2. 数据库设计(四)概念数据模型
  3. CAS去掉HTTPS认证
  4. tortoise从服务器获取项目_项目中一次网络问题处理的复盘
  5. L2-023 图着色问题-PAT团体程序设计天梯赛GPLT
  6. 几个更新(Update声明)查询方法
  7. python怎么画图表_Python 使用pycha画图表
  8. Linux_数据段、代码段、堆栈段、BSS段的区别
  9. Python 之字典(dict)根据 value 获取 key
  10. springboot集成webservice接口
  11. 传送的谷歌应用程序打不开_如何使用Google Home将内容传送到您的Chromecast
  12. 解决用友固定资产出现的“不能月末结账,可能月末未结账”的处理办法
  13. 编程题(买帽子求第三便宜价格)
  14. 使用C# .net开发微信公众号之设置所属行业
  15. 哲理故事300篇 上
  16. Android 9 wifi PNO 扫描
  17. Mac 安装element-ui
  18. java制作坦克大战
  19. 生命中最重要的 - 史蒂芬·柯维
  20. 【机器学习入门——1】Python 开发环境的安装 Python(x,y)及Pycharm

热门文章

  1. js isinteger_在JavaScript中使用示例使用Number isInteger()方法
  2. c语言中负数_C语言中负数的模数
  3. 集合——对象数组(引用数据类型数组)
  4. linux之睡眠函数(my_sleep)
  5. OC中的基本容器和基本数据类型
  6. 设计模式7----代理模式
  7. 【Verilog HDL】深入理解部分语法规则的本质
  8. shell编程练习题
  9. 1038. 统计同成绩学生(20)
  10. 我了解到的面试的一些小内幕!顺利通过阿里Android岗面试