CF1286E-Fedya the Potter Strikes Back【KMP,RMQ】
1|0正题
题目链接:https://www.luogu.com.cn/problem/CF1286E
1|1题目大意
定义一个字符串的权值为对于每个的区间,会产生的贡献。
现在开始时为空串,次往后加入一个字符和往序列加入一个数字,然后求这个串的贡献。
强制在线
1|2解题思路
我们在每次加入字符后考虑所有后缀的贡献,然后考虑加入一个字符后后缀产生贡献的变化。
一个想法是对于原来的后缀,如果,那么新的后缀就会产生贡献,否则就不会。除了这些以外还有如果那么后缀也会产生贡献。
也就是一次操作最多增加一个会产生后缀的贡献,我们取考虑怎么维护其他以前的后缀。
权值方面比较简单,的贡献转到的贡献无非就是对取,也就是我们要一个能支持加入删除全部取的数据结构。其实暴力维护都行,我们用map记录贡献为的后缀有多少个,然后每次暴力把大于的都修改掉即可,这样势能分析一下就知道是对的。
现在第二个问题是我们怎么知道每次要删除的后缀是哪些。我们建立出KMP的树,那么原本产生贡献的后缀肯定都在点到根节点的路径上,我们维护一个表示节点往祖先走的路上遇到的第一个满足的,然后我们就可以一直往上走找到要删除的后缀了。
用维护一下后缀的贡献即可。
时间复杂度:
1|3code
__EOF__

本文作者:QuantAsk
本文链接:https://www.cnblogs.com/QuantAsk/p/16573826.html
关于博主:退役OIer,GD划水选手
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/QuantAsk/p/16573826.html
关于博主:退役OIer,GD划水选手
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
分类:
字符串
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2021-08-10 P7737-[NOI2021]庆典【tarjan,虚树】
2021-08-10 P5494-[模板]线段树分裂
2021-08-10 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)部分题解
2021-08-10 jzoj7212-[2022省赛]染色(color)【根号分治】