「杂题乱写」Codeforces 上 DP 乱写
作为衡中 OIer,我们要紧随 SoyTony 步伐,建设新时代 SoyTony 特色博客 .
原博客:SoyTony .
CF607B Zuma
给一个长度为 的字符串 ,每次可以选一个回文子串消掉,问至少消几次能消完 .
.
魔幻区间 DP .
首先处理长度不大于 的答案,这是平凡的 .
然后考虑如果对于 ,那么消除 的时候肯定能顺便把 也消了,否则枚举断点拆成两半转移即可 .
时间复杂度 .
CF178F Representative Sampling
给 个字符串,要求选出一个 元子集 ,使得
最大 .
,字符串长度不大于 .
(F2:)考虑 Trie 树上 DP,令 表示 的子树选了 个串的答案,转移是树形背包,时间复杂度 , 是 Trie 树点数,无法得到满分 .
把树压缩一下,留下表示字符串末尾节点的虚树,这样就有 ,时间复杂度即为 ,可以通过 .
CF1774E Two Chess Pieces
个点的树上两个指针 A, B,要求任意时刻 A, B 间距离不超过 .
A,B 有一些必须经过的结点,每次操作可以将 A 或 B 移动一步,问 A, B 从根节点出发遍历所有点后回到根的最小步数 .
.
处理每个点 子树内最深结点深度 ,维护 表示只靠一个指针环游 子树内结点的答案, 表示两个指针环游 子树内的答案 .
对于每条边 ,如果 或者 子树内有 A, B 都要去的点,那么对于这条边的 就必须有 A,B 移动的四次贡献(这时候 未定义,不过也不需要可以不管),否则可以借助 的答案走两步转移到祖先(此时一定可以只用一个指针完成任务,另一个不用动).
实际操作的时候可以把每个 加一,比较好转 .
时间复杂度 .
CF1783D Different Arrays
给一个序列 ,对于所有 ,执行操作 , 或 , .
问最后可能有多少种不同的序列 .
.
令 表示到第 个操作前 的答案,转移的时候对于 两种操作生成序列相同否则不同 .
这样即可做到 .
CF1771D Hossam and (sub-)palindromic tree
给一棵 个点的树,每个点上有一个字符,找一条最长的链使得链上节点上的字符顺次链接为回文串 .
.
考虑序列上的问题就是区间 DP,令 为 的答案,则
上树的话考虑每条链 往里缩一格得到的转移即可 .
转移点可以倍增预处理,时间复杂度 .
CF1761D Carry Bit
给两个整数 ,问有多少 满足 且 二进制下的进位数为 .
考虑 DP, 表示 共进了 位,最后进位 / 未进位的方案数 .
经过朴素的分类讨论可以得到转移:
观察可以发现,如果对于每一位的进位 / 未进位已经钦定完毕,那么只有相邻状态不一样的位置会产生贡献,这个等价于连续段数量 .
于是考虑枚举连续段数量 ,然后讨论首位是否进位后插板法即可 .
时间复杂度 .
需要注意一下 corner case .
CF1743E FTL
有两艘飞船,第 艘飞船的攻击力为 ,每一次攻击的充能时间为 ,一开始两艘飞船没有充能 .
现在要打败敌方飞船,敌方飞船的血量为 ,防御力为 . 对于一次攻击力为 的攻击,敌方飞船的血量会减少 . 攻击的攻击力为所有参与攻击的飞船攻击力之和 .
敌方飞船血量不大于 即被打败,问最少需要多少时间能够打败敌方飞船 .
.
考虑两个飞船同时攻击就相当于回复到初始状态,于是 DP 处理对于每个 处理最后一次两个一起攻击前面都不一起攻击打掉 格血的答案 .
然后 DP 统计一下把上面的东西组合起来的答案即可 .
时间复杂度 .
(注:不会更新,纯属搞笑用)
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/17135326.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 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】
2022-02-19 星系探索 题解
2021-02-19 题解【AtCoder - CODE FESTIVAL 2017 qual B - D - 101 to 010】