GDOI2024 考前模拟2 T2

题目描述

题解

考虑黑用 \(1\) 表示,白用 \(0\) 表示,那么Alice要赢,就意味着每条边 \(x\rightarrow y\) 等价于 \(clr[x]\le clr[y]\)连边也就是 \(\le\) 的关系。

不妨编号从 \(0\) 开始,题目的染色方式则意味着 \(clr[x]\neq clr[x\bigoplus 1]\)。那么原图里有 \(x\rightarrow y\) 这样的一条边,等同于需要添加 \(x\bigoplus 1\leftarrow y\bigoplus 1\)
需要注意,Bob 可以任意操控他能染的点。也就是说,若 \(x\) 是 Alice 负责的,\(y\) 是 Bob 负责的,并且 \(x<y\)\(x\)\(y\) 之间有直接的边。那么 Alice 给 \(x\) 染完,必须不能留给 Bob 染 \(y\) 就赢的可能性。换句话说,如果是 \(x\rightarrow y\),则 Alice 必须给 \(x\) 染白色。如果是 \(x\leftarrow y\),则 Alice 必须给 \(x\) 染黑色。
换成我们图里面的语言,就是对于这样的情况,额外添加一条 \(x\)\(x\bigoplus 1\) 之间的边。方向依据上面的讨论(之间的方向)而定。建完边,跑 SCC 缩点。
最后是检查工作:

  1. 假如存在 \(x\)\(x\bigoplus 1\) 位于 tarjan 缩点后的同一个连通块,那么无论如何 Alice 都是输的。因为同一个连通块等价于必有 \(clr[x]=clr[x\bigoplus 1]\)
  2. 再次强调 Bob 的控制能力。假如存在 \(x,y\) 都是 Bob 负责的,且 \(x\)\(y\) 有路径,那么 Bob 可以直接使 \(clr[x]>clr[y]\),Alice 就输了。
    假如到这里还没出现问题,我们断言 Alice 可以赢。因为 Alice 只要根据图的限制,把自己负责的点都染好,Bob 是没有赢的办法的.
posted @ 2024-02-28 11:24  FLY_lai  阅读(13)  评论(0编辑  收藏  举报