CF 705 题解

CF 705 题解

A Hulk

模拟即可.

B Spider Man

打 sg 表可以发现, 奇数个球先手必败 (sg=0), 偶数先手必胜 (sg=1). 多个组合只要把 sg 值异或起来就好.

C Thor

暴力模拟就可以了, 用队列模拟.

D Ant Man

结论: 按照编号由小到大加入链表, 每次尽量让答案最小贪心就是对的.

若原来是 ij , 插入 k (不妨认为 i<j), 那么贡献如下变化:

  • i 变大
  • 变大到 j

变成:

  • i 变大
  • 变大到 k
  • k 变小
  • 变小到 j

从变化量的角度, 你插入了 k, 那么 变大到 kk 变小 不管插到哪里去都不变, 唯一的差别就是 变大到 j 变成 变小到 j.

类似的分析, 若 i>j, 可以认为 i 变小 会变成 i 变大.

也就是说, 每次插入, 会添加一个 变大到 和一个 变小, 会把一个 变大到 变成 变小到 或者 把一个 变小 变成 变大.

注意到这些变化是不可逆的, 那么意味着没有后效性, 因此贪心是对的.

这篇题解没有考虑和 se 的边界情况, 但是据说证明是类似的.

E Black Widow

考虑图论建模, 把每一个表达式视为一个点, 那么如果两个表达式含有相同的变量, 那么这两个表达式连一条边.

这一定是一堆链和环, 对于每一个联通块 (如果是环就破环为链), 然后设前 i 个表达式的异或和为 j, 当前公用变量值为 k 的方案数为 fi,j(0/1),k(0/1), 最后把每个连通块背包合并即可.

posted @   snowycat1234  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示