think-cell Round 1 题解 (A~F)
目录
A. Maximise The Score
排序后输出所有奇数位之和 .
B. Permutation Printing
.
C. Lexicographically Largest
注意到对于一个 来说 中的所有数都可以被选中,那么问题变给若干区间,每个区间选一个数要求组成的集合字典序最大 .
从大到小扫描每次能选则选即可 . 具体实现中可以按右端点排序扫一遍依次检查能不能选当前区间 .
D. Sum over all Substrings
注意到对于一个 -good 的串 ,如果 那么它可以提供 作为 的区间,这样隔 3 个放一个则可以知道对于一个不包含 的段来说其答案就是 . 暴力计算每一个子区间的答案即可通过 Easy Version .
对于 Hard Version,令 表示 所有前缀的答案,考虑在开头加一个字符的影响:
- :并没有什么影响, .
- :可以设置 来覆盖当前位, .
那么就 解决问题了 .
E. 2..3...4.... Wonderful! Wonderful!
考虑如何判定一种最终局面能否被达成,考虑用一个长度为 的 01 串 表示,其中 则表示最终的序列中保留 ,反之则是 被删除 .
断言: 合法当且仅当 中存在一个 0 使得左右都有至少 个 1 且 1 的个数是 的倍数 .
证明:
- 如果这个 0 左右都有 个 1,直接操作一次即可 .
- 如果 中共有 个 1,以 1 多的一侧中中的某个 1 为中心操作一次即可归约至上一个情况 .
- 其他情况,在某一侧随便只用 1 操作一次即可让对应侧 1 的个数减 ,不断进行操作即可归约至上一个情况 .
从而证明完毕 .
那么枚举 和剩下的元素数量 ,单步容斥然后插板即可得出方案数为 ,可以简单计算 . 因为总枚举量是调和级数的所以时间复杂度为 .
F. Maximize the Difference
先考虑如何计算 ,固定 max 和 min 的取值 后考察 ,按位考虑,不难发现只有 对应位为 0、 对应位为 1 时或 这个操作才可能产生贡献,那么可以得到此时的答案就是 ,其中 是 按位取反后的值 .
那么就是要支持末尾插入,查询 . 考虑到 有限制,维护集合 表示当前的 和 二进制下所有子集组成的集合 . 每次插入的时候动态维护 ,均摊下来最多进行 次插入,插入的时候动态维护 中元素的最大值即可 .
时间复杂度 .
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/18019508
版权声明:本作品采用「署名-非商业性使用-相同方式共享 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】
2023-02-18 「解题报告」AHOI2022 排列
2022-02-18 丽泽普及2022交流赛day21 社论