CF1820 & 1819 题解
Div2 A
答案取决于 _
连续段长度,有一些细节,比如什么时候答案要加一减一,以及字符串是单独的 ^
。
Div2 B
首先先把全
记将字符串视为首位相接的环的时,最大
Div2 C & Div1 A
对是否存在数
- 如果有,那么记录最左边的那个位置为
,最右边位置为 ,操作即为 ,同时判断 的 是否是原来那个/ - 否则,直接将一个大于
或者重复出现的数改为 。
Div2 D & Div1 B
首先注意到答案最多为
考虑第一刀纵切和第一刀横切,若先纵切,那么
固定了矩形大小之后,判断合法性。考虑当前这刀切什么,必然是一个
Div2 E & Div1 C
观察到有解当前仅当是链上挂叶子,证明考虑从一个深度超过
实现上求出树的直径,然后黑白染色,从左开始每次走白点到尽头再走黑点回来。
Div2 F & Div1 D
记
,此时- 考虑它前面最近的和他有交的集合
,若不存在或者 ,那么 - 否则要找到一个
,使得 后集合清空,然后
这启发我们找到那些位置之后可以被清空:
或者 ,那么可以实现- 否则依旧考虑它前面最近的和他有交的集合
,若 存在并且 $p \ge f_{i-1},那么可以实现,否者不能。
用 set
维护所有可以的位置,对 lower_bound
Div1 E
考虑这个询问操作能告诉我们什么:
如果当前图(只考虑能用的关键边,下同)联通,那么答案恒为
考虑我们取出一条边,将一个连通块分开,如果这是一个桥,那么分别查询
接下来我们只要对每条边进行这个操作,我们先求出一个关键边的生成树,那么每次只要断掉生成树的一条边,接上考察的一条边,如果还联通说明它是关键边。
现在问题是如何求生成树。
也很简单,扫描每个边,把不是桥的边堵上就好了。
Div1 F
考虑把边的变换建出来,是一个分型的形式。
相当于一个
所以每种的答案应该是一样的,考虑把关键串放到 trie 上维护,相当于现在要遍历所有关键点。
定义
再定义一个环的答案,即最终答案,每次修改类似于线段树,在回溯时 pushup
。
特别的,当只有一个或两个串时最小值会寄,特判一下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)