题解 [LuoguP3426][POI2005]SZA-Template
Luogu Link
题解 P3426(kmp)
首先求出 next\text{next}next 数组(记为 nxtinxt_inxti)。
设 fif_ifi 表示印制 [1,i][1,i][1,i] 所需最小印章,gig_igi 表示 [1,i][1,i][1,i] 的印章最长能印多长。
可以发现 fif_ifi 只会有两种值:i,fnxtii,f_{nxt_i}i,fnxti。证明如下。
- 如果 fi<fnxtif_i<f_{nxt_i}fi<fnxti,但 [1,fi][1,f_i][1,fi] 必然能印制完 [1,nxti][1,nxt_i][1,nxti],则 fi≥fnxtif_i \geq f_{nxt_i}fi≥fnxti 矛盾。
- 如果 fi>fnxtif_i > f_{nxt_i}fi>fnxti 且 fi≠if_i \neq ifi=i,因为在同一位置上印不同字符是不允许的,所以必然 [1,fi][1,f_i][1,fi] 是 [1,i][1,i][1,i] 的后缀,也是前缀,所以可以用 fif_ifi 更新 nxtinxt_inxti 的值,矛盾。
- 如果 fi>if_i > ifi>i,显然不成立。
接下来考虑什么时候 fif_ifi 能取到 fnxtif_{nxt_i}fnxti:考虑 gnxtig_{nxt_i}gnxti,若 gnxti≥i−nxtig_{nxt_i}\geq i-nxt_ignxti≥i−nxti,则 fif_ifi 能取到 fnxtif_{nxt_i}fnxti。在计算完 fif_ifi 的时候更新 gfig_{f_i}gfi 为 iii 即可。
//P3426
#include <cstring>
#include <cstdio>const int N = 5e5 + 10;
int n, nxt[N], f[N], g[N];
char s[N];int main(){scanf("%s", s+1);n = strlen(s+1);for(int i = 2, j = 0; i <= n; ++ i){while(j > 0 && s[i] != s[j+1]) j = nxt[j];if(s[i] == s[j+1]) ++ j;nxt[i] = j;}for(int i = 1; i <= n; ++ i){if(g[f[nxt[i]]] >= i-nxt[i]) f[i] = f[nxt[i]];else f[i] = i;g[f[i]] = i;}printf("%d\n", f[n]);return 0;
}
题解 [LuoguP3426][POI2005]SZA-Template相关推荐
- 【题解】[POI2005] SZA-Template
题意 给你一个长度为 n 的字符串,求印章长度的最小值,这个印章可以重复印刷同一个位置,但是每次必须恰好把所有字母都印到纸上.n<=5e5. Solution: 考点:字符串匹配. 以为是水题, ...
- 洛谷P3426 [POI2005]SZA-Template 题解
洛谷P3426 [POI2005]SZA-Template 题解 题目链接:P3426 [POI2005]SZA-Template 题意:你打算在纸上印一串字母. 为了完成这项工作,你决定刻一个印章. ...
- 2016-2017 ACM-ICPC CHINA-Final(EC-final) 题解(10 / 12)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2016-2017 ACM-ICPC CHINA-Final 比赛链接:https://codefor ...
- 2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final) 题解(10 / 13)
2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final) 9题金 6题银 5题铜 题目比较简单,但是读题太难了- 比赛链接:htt ...
- 解题报告(二)多项式问题(多项式乘法及其各种运算)(ACM/ OI)超高质量题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...
- Wannafly挑战赛29题解
这套题目非常有意思啊23333--话说为啥没有上条先生的呢-- 传送门 \(A\) 御坂美琴 蠢了--首先先判总共加起来等不等于\(n\),不是的话就不行 然后dfs记录\(n\)不断分下去能分成哪些 ...
- 【codeforces】【比赛题解】#849 CF Round #431 (Div.2)
cf的比赛越来越有难度了--至少我做起来是这样. 先看看题目吧:点我. 这次比赛是北京时间21:35开始的,算是比较良心. [A]奇数与结束 "奇数从哪里开始,又在哪里结束?梦想从何处起航, ...
- Codeforces 773D Perishable Roads 最短路 (看题解)
Perishable Roads 智商题, 不会啊.. 贴个官方题解 https://codeforces.com/blog/entry/51883 #include<bits/stdc++.h ...
最新文章
- [转]开发网路游戏的延迟处理方法,广播
- 用这种方式,我每次都是朋友圈里第一个预见AI科技趋势的人
- SQL 语句快速参考
- Discuz! $_DCACHE数组变量覆盖漏洞
- 买卖股票的最好时机二Python解法
- 信道容量受哪三个要素_影响信道容量的主要因素有哪些
- 图像去模糊代码 python_用Keras搭建GAN:图像去模糊中的应用(附代码)
- 云小课 | DSC之数据水印,防止数据被盗用
- Monto Carlo估计动作价值(action values)
- Android Studio中XML注释错误问题
- 【洞察】152号令,重量级行业信息技术法规
- MATLAB 函数画图
- Python基础语法知识2
- 天然气压缩因子计算软件_为什么测量天然气选择气体涡轮流量计?
- Python游戏——Pong
- 什么是工作分解结构?What Work Breakdown Structure?
- Xib中设置view的BorderColor 及 ShadowColor
- 七张图总结了我的2021年,心依然热,情依然真----感谢2021年的自己,感谢CSDN
- 重邮2019计算机复试准备工作相关
- Ubuntu安装.md阅读工具-Typora
热门文章
- php网页在iis里打不开,asp的网站在iis上打不开
- Percona监控数据库解决方案
- 水滴筹创始人:除中国以外不推行996;字节跳动2021年净亏损6041亿!
- 解决 Successfully created project '' on GitHub, but initial push failed: Could not read from remote
- 红楼梦人物出场顺序python_Python 中文词频分析——红楼梦人物出场次数
- 详解 PerformanceResourceTiming API,咦,这货真的干!
- JavaScript 进阶 - 第2天
- 拼多多笔试题 回合制角色扮演
- 标准化考场时钟系统方案
- 在CorelDRAW 2019创建对称绘图模式