模拟赛8.19 解题报告
T1. 颠倒黑白
题意:给出一个 \(n\times m\) 的矩阵,每个数 \(\in\{0,1\}\)。两人游戏,每次选一个 \(1\) 的格子,然后把该格子所有左下角的数取反(包括自己),如果不能操作就输了。两个人都绝顶聪明,求谁能赢。多测,共 \(T\) 组数据。\(1\le Tnm\le10^7\)
神奇的构造式博弈。
考虑左下角角落的格子,若为 \(1\) 则先手胜利,否则后手胜利。
证明:
若左下角的格子为 \(1\),那么先手必定可以操作这个格子。之后后手必须选择一个非左下角的格子操作,一轮之后左下角又变成了 \(1\)。因此先手必定可以一直选左下角,有必胜策略。
反之,先手必须选择一个非左下角的格子,之后左下角变成了 \(1\),此时后手具有必胜策略。
这启示我们不刷构造题是非常痛苦的一件事。
T2. 糖果数
题意:求有多少个 \(n\) 位数至少存在连续的 \(3\) 个 \(1\),允许有前导 \(0\)。\(1\le n\le10^{18}\)
一眼矩阵快速幂。
先容斥,算出不出现连续的 \(3\) 个 \(1\) 的数字个数。设 \(f[i,j]\) 表示填到了第 \(i\) 位,结尾是连续的 \(j\) 个 \(1\) 的方案数 \((0\le j\le 2)\)。那么:
然后矩阵快速幂即可。
T3. 麻将桌(P4169 天使玩偶)
题意:给出 \(n\) 个点的坐标 \((x_{1...n},y_{1...n})\)。有 \(m\) 个操作,每个操作有两种:
-
\(\text{1 x y}\):加入一个新的点,坐标为 \((x,y)\)。
-
\(\text{2 x y}\):查询 \((x,y)\) 与所有点中的最小曼哈顿距离。
\(1\le n,m\le3\times10^5\)
模拟赛放做过的 \(\text{CDQ}\) 模板题是什么意思?
考虑把绝对值拆成 与左上、左下、右上、右下 的点的最小曼哈顿距离。
这里只说左上,其他方向类似。
我们列出式子,答案就是
时间一维,横坐标一维,纵坐标一维,用 \(\text{CDQ}\) 分治即可。
T4. 数学题(P2542 [AHOI2005]航线规划)
题意:一张无向图,有两种操作:
-
删除一条已有的边,保证删除后图连通。
-
查询两点之间的割边数量。
\(1\le n\le 3\times10^4,\space 1\le q\le4\times10^4,\space 1\le m\le10^5\)
神奇但沈奇的题。
套路,离线下来,从后往前依次加边,同时查询割边数量。
在加边之前,由于删边保证连通,可以先边双缩点。
缩完点后是一棵树,对于一条新加的边 \((u,v)\),我们会使得树上路径 \(u\rightarrow v\) 与 \((v,u)\) 形成一个边双,使得 \(u\rightarrow v\) 上的每条边都不再成为割边。
在树上的割边打 \(1\) 标记,非割边打 \(0\) 标记,那么查询即为树上路径权值和,加边相当于把路径上每条边的权值覆盖成 \(0\)。
树剖 + 线段树即可。