题意

给出AAA、BBB两个字符串,至多将AAA串修改一个字符,使得A[1..k]A[1..k]A[1..k]是BBB的子串且kkk最大。

思路

枚举BBB的开头,二分LCPLCPLCP,然后用字符串hashhashhash判断。设LCP(A,B[i..m])LCP(A,B[i..m])LCP(A,B[i..m])为lenlenlen,显然是要修改A[len+1]A[len+1]A[len+1]的,再求出LCP(A[len+1],B[i+len+1])LCP(A[len+1],B[i+len+1])LCP(A[len+1],B[i+len+1]),那么答案就为这两个LCPLCPLCP相加再加上修改的111。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>char a[50001], b[50001];
unsigned long long p[50001], fa[50001], fb[50001];
int la, lb, ans;int find(int l1, int l2) {int l = 0, r = std::min(la - l1 + 1, lb - l2 + 1);while (l < r) {int mid = l + r + 1 >> 1;if (fb[l2 + mid - 1] - fb[l2 - 1] * p[mid] == fa[l1 + mid - 1] - fa[l1 - 1] * p[mid]) l = mid;else r = mid - 1;}return l;
}int main() {scanf("%s", a + 1);scanf("%s", b + 1);la = strlen(a + 1);lb = strlen(b + 1);p[0] = 1;for (int i = 1; i <= la; i++) fa[i] = fa[i - 1] * 131 + a[i] - 96;for (int i = 1; i <= lb; i++) fb[i] = fb[i - 1] * 131 + b[i] - 96, p[i] = p[i - 1] * 131;for (int i = 1; i <= lb; i++) {int res = find(1, i);if (i + res - 1 == lb || res == la) {ans = std::max(ans, res);continue;}int x = find(res + 2, res + i + 1);ans = std::max(ans, res + x + 1);}printf("%d", ans);
}

【二分答案】JZOJ_3337 wyl8899的TLE相关推荐

  1. 【codevs3119】高精度开根号(二分答案)

    problem 高精度开根号 输入一个数 求平方根 solution 二分答案,如果mid*mid>原数就去找更小的,反之找更大的. 精度小于二忽略不计? 用到高精加,高精乘,加低精,除低精,比 ...

  2. luogu P2680 运输计划 (二分答案+树上差分)

    题目背景 公元 20442044 年,人类进入了宇宙纪元. 题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条航道建立在两个星球之间 ...

  3. 【题解】营救(二分答案)

    营救 题目描述 一座摩天大楼起了大火,n个人都被困在了顶层狭长的走廊上,大家排着长长的队伍等着逃离险境.但火势很猛,消防员升起的救生舱只有m次运人下来的机会,并且每次运的人总重量还不能太重,避免将救生 ...

  4. P4343 [SHOI2015]自动刷题机 Python(二分答案)

    在这吐槽一下洛谷的OJ,对Python不是很友好,一样的思路实现下来大部分数据会TLE,需要不断的优化复杂度  :( 题目地址:[SHOI2015]自动刷题机 - 洛谷 优化不下去了,对比了一下Pyt ...

  5. 0629-树状数组+二分答案-排列

    今天的测试,让我知道自己还有很多很多知识点的掌握不牢,发现自己代码能力很差,思维也不够好,蒟蒻感到深深地难过.但不管怎么样,一切杀不死我的,都会使我变得强大,我不会放弃挣扎的!我相信只要肯钻研,就无论 ...

  6. UVA1396 Most Distant Point from the Sea(AM - ICPC - Tokyo - 2007)(计算几何,半平面交 + 二分答案)

    整理的算法模板合集: ACM模板 题目传送门 见<训练指南>P279 很明显就是一个二分答案,它问的是最远的点,直接枚举因为这里都是double类型的数所以有无限个点,我们可以直接二分. ...

  7. UVA1146 / LA3211(ACM-ICPC 2004 Europe - Southwestern) Now or later(2-SAT问题 + 二分答案)

    题目要求为 最大化最小值,很明显就是二分答案. 题目中每个飞机 要么是一种状态(早),要么是另一种状态(晚),考虑 2-SAT. 我们二分答案,二分着陆时间间隔的最小值 x. 枚举每两个飞机 p , ...

  8. 解题报告:luoguP2868 Sightseeing Cows G(最优比率环,负环判定,二分答案)

    根据题意,我们要环上各点权值之和除以各边权值之和最大. 求最大答案,很明显可以使用二分答案.那么我们假设当前答案为 x,如果有更大的答案,那么方程就可以按下图转换: 也就是说如果有更大的答案,则有一个 ...

  9. P2759 奇怪的函数(二分答案,数学运算)

    P2759 奇怪的函数 范围2e92e92e9,直接枚举肯定超时,正着直接求答案求不出来,那么运用逆向思维,直接二分答案判断即可.这道题涉及简单的数学运算. 要xx>=nx^x>=nxx& ...

  10. P3743 kotori的设备(二分答案,思维,线性)难度⭐⭐⭐

    题目链接 题目背景 kotori 有 n 个可同时使用的设备. 题目描述 第 i 个设备每秒消耗ai个单位能量.能量的使用是连续的,也就是说能量不是某时刻突然消耗的,而是匀速消耗.也就是说,对于任意实 ...

最新文章

  1. 当我们做MVP产品时,我们到底在做什么?
  2. 撒花!吴恩达新书《Machine Learning Yearning》完整中文版pdf开放下载
  3. SAP Spartacus CurrentProductService返回的null对象
  4. Java中的Type接口和Class类有什么区别
  5. c malloc 头文件_C/C++笔试题:主要考察C/C++语言基础概念算法及编程,附参考答案...
  6. Android下 布局加边框 指定背景色 半透明
  7. Linux 内核编译 LOCALVERSION 配置(分析内核版本号自动添加的“+“号)
  8. kubernetes英语怎么读_小学三年级英语怎么学
  9. mysql算大型数据库吗_mysql – 估计大型数据库的大小和速度
  10. 正则表达式相关:C# RichTextBox显示html文本内容
  11. Kepware助力数据中心对接楼宇自动化系统
  12. c语言数组指针移位,C语言数组指针_3
  13. 【WeUI】关于jQuery WeUI和WeUI版本兼容的问题
  14. 如何判断企业微信是否在线?
  15. 华为U5800刷机,Root权限
  16. php课程设计感想,设计心得体会
  17. php 查询数据传值,php-如何在Laravel中传递数据进行查看?
  18. 浅谈HTTP 和 HTTPS的区别
  19. java基础总结笔记
  20. 【web前端】移动端控制台插件,手机端页面查看相关页面控制台信息

热门文章

  1. Jetson Xavier NX-EMMC重装系统
  2. 2020java开发面试题
  3. [计算机网络]网络层IP协议 选路算法
  4. 新买笔记本屏幕缝隙有灰尘_如何清除笔记本电脑上的灰尘
  5. 微信怎么更新最新版本?两招搞定,别轻易卸载!
  6. TZOJ 3244 Happy YuYu's Birthday(数学几何)
  7. 邮箱大师手机版服务器异常,网易邮箱大师-高效强大的全平台邮箱客户端
  8. QFP、PQFP、LQFP、TQFP封装形式及PCB详解(转载)
  9. java+selenium爬取图片签名
  10. ZR1012 Zbox loves keyboard (dp)