CF1671E
注意到不同子树间的答案独立。那么对于 为根的子树,其贡献应该是其左儿子乘右儿子再乘它自己的方案。那么由于它自己的方案只与 有关,所以当其操作后能使答案贡献增加,当且仅当 。为了排除儿子自身的影响,我们将 视为 为根子树中遍历得到字典序最小的序列。那么只要 , 就会对答案贡献 倍,因为可以不交换。时间复杂度 。
CF1485F
考虑暴力 DP。定义状态函数 表示前 个数, 时的方案数。对于情况 ,我们有:。对于情况 ,我们有:。其中 为值域,我们可以将 视作 。那么有:。
整理一下,有:。不难发现,我们每次相当于将第二维同时增加了 ,而后面是个全局 。这里有个很典的 trick,我们记录 表示整体右移的大小。那么这次转移较初始状态右移了 。我们还原到初始状态,就有:。记 ,有:。然后就做完了,由于第一个转移相当于直接赋值,所以只需要维护 ,记录全局 即可。答案也为全局 。时间复杂度 。
CF1582F1/F2
对于 F1,我们定义状态函数 表示前 个数,异或和为 时最小的结尾。那么能做到 。
观察 维护出的结果,我们发现。当 ,且 是在 时用 转移出来的。即 。那么 时 如果等于 那么选择的下标一定是 。那么我们考虑定义 表示最大值不超过 时,异或和为 时结尾下标的最小值。那么就能做到 了。
P3825
2-SAT 板子。
先考虑 的情况,那么对于第 场比赛,我们就只有两种选择。则现在问题转化为:对于每场比赛选两种情况中的一种,使得满足 条限制关系。然后这就是一个 2-SAT 问题,直接跑就行了。现在考虑 的情况,注意到我们 ,考虑枚举每个 是 还是 。这样的时间复杂度是 的,会炸。但是当 时,这场能选的车为 ,当 时,这场能选的车为 。如果 和 都无解,那么说明不管 选 还是 都无解,所以 时一定无解。那么时间复杂度就变成 了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性