zoukankan      html  css  js  c++  java
  • 博弈题乱做

    CF1442F Differentiating Games

    考虑加完边之后那些到不了环的点,设为 (S),它们的 SG 值必须互不相同,于是一定构成一个无环的竞赛图,需要 (O(|S|^2)) 条边。对于剩下的点,发现一般环不太好处理,于是给它们每个点连一个自环。

    (S) 中的点分别询问,如果有一个点答案为输,那么 (x) 就是那个点。否则,(x) 为某个有自环的点。分析一下,发现当询问到 (S)(x) 的后继时答案为胜,否则为平。那么我们需要保证有自环点到 (T) 中的后继集合互不相同。

    (S) 为原图拓扑序的后 (20) 个点,对别的点贪心加/删边调整就能在规定次数内满足条件了。

    CF1033G Chip Game

    将所有 (v)(a+b) 取模,设为 (u),那么游戏 (u) 的胜者就是游戏 (v) 的胜者。因为 (u) 胜者可以假装在玩游戏 (u),当另一个人将某个 (u_i) 减到负数时他可以再减一次,这样 (v_imod (a+b)) 不变,这两步操作对 (u) 没有影响。

    考虑如何确定 (u) 的胜负关系,发现每堆石子最多只能被一个人取。不妨设 (aleq b),那么:

    • (u_i<a) 的堆可以忽略;
    • 若存在 (aleq u_i<b)(a) 胜;
    • 若存在 (2aleq u_i)(a) 先手或有多于一堆满足条件,(a) 胜;
    • 剩下情况只和先后手及石子堆数有关。

    于是可以枚举 (a+b),然后将 (v) 取模后排序,分类讨论一下对 (a,b) 的取值计数即可,可以只统计胜负只和先后手有关的情况。

    CF1439E Cheat and Win

    对于一棵树,点 (i) 的 SG 值为 (2^{dep_i}),于是后手胜当且仅当每层的黑点数为偶数。那么答案就为每种深度黑点个数 (mod 2) 差分后非 (0) 的位置数。

    由于原图点数非常大,所以考虑建虚树,那么就需比较 dfn 和和 lca,可以考虑怎么快速的跳 fa。将 ((x,y)) 改写为 ((x+y,x))。于是 ((x,y)) 的 fa 只能为 ((x-1,y))((x-1,y-1)),发现当 (operatorname{lowbit}(x)<operatorname{lowbit}(y)) 时为前者,否则为后者。更进一步,连续的 (operatorname{lowbit}(x)) 级祖先都是同一种情况,可以一起处理,那么一个点至多跳 (O(log)) 步就会跳到根。

    建出虚树后容易处理链染色对深度的贡献,就做完了。

    https://codeforces.com/contest/1439/submission/131110694

    CF1458E Nim Shortcuts

    维护一个以 ((0,0)) 为左下角的矩形,满足每行每列至少有一个必败点。当他上面一行有 shortcut 是就往上扩展一行,右面同理,若都没有就标记右上角是必败点,然后往右上扩展一行一列。

    这样预处理出的所有必败态为 shortcuts 和若干条斜率为 (1) 的线段/射线,对于后者,查询时就在固定截距的线段/射线上二分就好了。

    AGC010D Decrementing

    如果全是奇数,那么后手可以走模仿着获胜,否则,将最后一个偶数变为奇数的人获胜,这样只和偶数个数的奇偶性有关。但有一种特殊情况,当只有一个奇数和偶数个偶数时,先手会操作那个奇数使序列 (/gcd) 让他更有几率获胜。这种情况至多只会发生 (O(log)) 次,暴力递归下去判断就行了。

    https://atcoder.jp/contests/agc010/submissions/26392571

    CF1147F Zigzag Game

    希望找到一组完美匹配使得 Bob 可以一直沿着匹配边走,然后发现这是一个稳定婚姻问题,做完了。

    https://codeforces.com/contest/1147/submission/110935845

    AGC026F Manju Game

    首先发现假如先手把序列分成的两端中有偶数段,那么后手可以取这段来获得另一段的先手权,对先手肯定不优。

    于是,如果 (n) 为偶数,那么先手一定取开头或结尾。否则,先手肯定取偶数位置,然后后手选择一段取完递归到另一段。结果就是先手取了一段奇数前缀和后缀的偶数位置,以及中间一段的奇数位置。那么问题就转化为先手选择若干个偶数位置作为分界点,最大化分成的段中奇数位置减偶数位置的最大值,可以二分加贪心解决。

  • 相关阅读:
    【程序15】成绩>=90分用A表示,60-89分用B表示, 60分以下用C表示。
    【程序13】打印出所有的“水仙花数”,运算符和表达式
    cacti安装
    lamp安装
    虚拟机克隆之后网络重启失败
    Linux 标准输入输出、重定向
    /etc/crontab和crontab -e的区别
    nginx安装
    【程序11】有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,问每个月的兔子总数为多少?
    【程序9】输出国际象棋棋盘
  • 原文地址:https://www.cnblogs.com/Y25t/p/15379681.html
Copyright © 2011-2022 走看看