Codeforces Round #579 (Div. 3) D2. Remove the Substring (hard version)
发布日期:2021-06-29 14:25:17
浏览次数:3
分类:技术文章
本文共 755 字,大约阅读时间需要 2 分钟。
题目大意
给出一段长串s1和它的一段非连续子串s2,求s1最长的连续删除区间,使得s2仍为s1的非连续子串
题解
最大分割情况只可能是两种,一种是最左端或者最右端删去一大段,另一种是中间任意两个字母间删去一大段
①先看第一种,那么肯定是要找到s2在s1中的最左相同点和最右相同点,很简单
②另一种,删去的区间端点两个字母肯定是s2中相邻的字母,即保证删去中间一段没用的,仍是子串 例如s1:abbccbbbcccddde s2: ab 那么最长区间肯定是找到s1最左端满足条件的a,再找到s1最右端满足条件的b,中间都是可以删的,如果s2:abd 就找到s1最左端满足条件的b,再找到s1最右端满足条件的d,作差值,然后取max
#includeusing namespace std;const int maxn=2e5+5;char s[maxn],t[maxn];int pre[maxn],bac[maxn];int main(){ scanf("%s",s); scanf("%s",t); int lens=strlen(s); int lent=strlen(t); int j=0; for(int i=0;i =0&&j>=0;i--){ if(s[i]==t[j]) bac[j--]=i; } int kmax=max(max(pre[0],lens-1-pre[lent-1]),max(bac[0],lens-1-bac[lent-1]));//第一种情况 for(int i=1;i
学如逆水行舟,不进则退
转载地址:https://chocolate.blog.csdn.net/article/details/100106762 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月10日 00时34分53秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
深度剖析原理!超全Android中高级面试复习大纲,含BATJM大厂
2019-04-29
温故而知新!Android开发者该学习哪些东西提高竞争力?成功入职阿里
2019-04-29
火爆知乎的Android面试题-Android-App的设计架构经验谈,大厂内部资料
2019-04-29
看完直接怼产品经理!Android多进程从头讲到尾,跳槽薪资翻倍
2019-04-29
快速从入门到精通!面试的时候突然遇到答不上的问题怎么办?已拿到offer
2019-04-29
Android开发知识体系!腾讯+字节+阿里面经真题汇总,成功入职阿里
2019-04-29
android开发语言!大厂经典高频面试题体系化集合,移动架构师成长路线
2019-04-29
typescript学习(进阶)
2019-04-29
三天敲一个前后端分离的员工管理系统
2019-04-29
axios请求携带cookie实现跨域(后端springsecurity)
2019-04-29
spring data rest 不隐藏主键id
2019-04-29
后端传来json数据,vue前端如何渲染??
2019-04-29
vue 增删改数据实时更新
2019-04-29
手敲一个前后端分离项目——成果演示
2019-04-29
Linux——基础命令篇
2019-04-29
-jsp-
2019-04-29
EL表达式、JSTL标签库、文件上传和下载
2019-04-29
Cookie、Session
2019-04-29
表单重复提交
2019-04-29