CF1451F 题解
liangbowen · · 题解
problem & blog。
这题原本的题解满是废话,让我写一篇(
这边直接给结论了。令
证明也是典中典。证两个条件即可。
- 证明
\forall S \Rightarrow \neg S :起点那里强制操作,并且你无法从(x,y)\to(s,t) (s<x \vee t<y) ,所以起点那一斜行的\oplus a_{x,y} 是不可能维持0 了。 - 证明
\exists \neg S \Rightarrow S :找到最小的i 满足val_i\ne 0 ,它对应的斜行是i 。取这一斜行二进制最高位所在的那个a_{x,y} 作为起点,终点取右下角。- 对于起点:
a_{x,y}\gets(a_{x,y}\oplus val_i) 显然可以使val_{i}'=0 。由于a_{x,y} 最高位在手,必定有a_{x,y}\ge(a_{x,y}\oplus val_i) 。 - 对于路径上的其他斜行:由于可以加,直接变成
(a_{i,j}\oplus val_{i+j}) 当然有正确性。
- 对于起点:
注意到先手必输态(全为
代码,时间复杂度