Codeforces Round #947 题解 (A~G)
目录
A. Bazoka and Mocha's Array
枚举每个循环移位判断 .
B. 378QAQ and Mocha's Array
首先最小的数肯定得选,删掉最小的数的倍数后再选一个最小的数,看一下能不能删空即可 .
C. Chamo and Mocha's Array
二分答案 ,把 的位置设为 , 的位置设为 ,然后就只需要判断是否存在一个长度不小于 2 的区间和 ,做一个最大子段和即可 .
D. Paint the Tree
注意到最优的策略一定是先在中点会合然后一起遍历所有点 .
对于从根遍历所有点的最小步数可以发现安排深度最大的叶子最后走即可得到答案 .
E. Chain Queries
一个点集是链当且仅当:
- 连通 .
- 对于每个点父亲组成的可重集合 ,下面两种情况满足其中一种:
- 中没有重复元素 .
- 中只有深度最大的点出现过 2 次,其他的元素没有重复出现过 .
连通可以算点数减边数,在 BFS 序上建树状数组维护即可 . 可以直接用一个桶动态维护 .
F. Set
按位枚举每一位的决策,注意到每确定一位实际上会使一些约束合并,可以动态维护所有剩余的约束进行暴搜 .
因为确定 个数后只剩 个约束,所以直接搜的状态数是 级别的,可以通过 .
G. Zimpha Fan Club
如果两个串都没有 *
,按位匹配即可 .
如果两个串都有 *
,只需匹配 *
隔开的最前面的串和最后面的串即可 .
对于一个串有 *
,一个串没有 *
的情况,按 *
划分成若干段,相当于每次对于一段计算到另一段的最早匹配点然后匹配掉这个位置,只需要支持每次快速找匹配点 .
首先两个只带 -
和字母的串进行匹配可以直接用卷积表示,具体见残缺的字符串 . 对于本题考虑倍增进行这个匹配的过程,这样复杂度就是 的了(因为可以注意到 ).
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/18214217
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】