World Final 2015 K. Tours
题目链接:https://qoj.ac/contest/280/problem/4686
题目大意:给每个点染色,问有多少种染色数满足存在一种染色方案使得:
- 每个颜色至少被染了一次,每个点都被染了一种颜色。
- 任意一个简单环上每种颜色的数量一样。
做法
注意到一个事情,两个环像个 $8$ 一样的相交,那么中间的那条路径也满足每种颜色的数量一样。
这启示我们或许可以把第二条当成方程一样,解一下方程。想到方程就想到了向量空间。虽然这一步是队长想的,并不是我想的,也许这并不自然
设一个 $n$ 维的向量空间,定义其中一个子空间 $S$ 满足:
其为 $span\{L_i\}$ ,其中 $L_i$ 为第 $i$ 个环所生成的向量,即 $L_{i,x}=1$ 当且仅当 $x$ 在环上,否则为 $0$ 。
可以看到,对于任意一个合法的染色方案:元素 $(a_1,a_2,….,a_n)\in S$ 满足每种颜色的加权和相等,其中加权和表示如果 $x$ 染色某种颜色,其对这个颜色的贡献为 $a_x$ 。
由于我们实际上只是用方程多生成了一些线性无关的方程,所以这与前面第二条是相互充要的,即一个方案是合法的当且仅当其在 $S$ 内任意一个元素下的颜色加权和相等。
这意外着如果我们能找到 $S$ 的另外一组基,就可以把问题变成求这组基下的合法染色方案。
不妨猜基中每个分量要么 $0$ 要么 $1$ ,且每个分量最多在一个元素中不为 $0$,由此可以发现,两个分量在一个元素中同时为 $1$ 等价于这两个元素在任何方程中的值都相等且存在一个方程中,其系数不为 $0$ 。
因此基实际上可以等价的看成,把每条边按照其所在的环的集合作为标准划分等价类(空集的点扔掉)。
而这又可以等价于按照其所在的 DFS 环的集合作为标准划分等价类(DFS 环指的是做一遍 DFS 后,由恰好一条非树边构成的环),原因是根据异或路径那个结论,每个环都可以当成若干个 DFS 环在异或意义下的线性表示,所以 DFS 环划分的等价类和所有环划分的等价类是一样的。
这样的话题目就好做了,答案就是每条链的长度的最大公约数,就做完了。
时间复杂度:$O(nm)$ 。
1 |
|
但是怎么证明呢?
首先,一个容易犯的误区是:等价类可以用 DFS 环划分,但是不代表 $S$ 就是可以只有 DFS 环所构成的元素生成。 所以问题关键就是如何利用所有环进行线性组合,组合出那组基来。(显然 $S$ 是那组基的子空间,现在只要证明这组基能够被生成就行了) 设每个环都是异或意义下 DFS 环的线性组合(这是唯一的,我之前另外一篇博客有介绍):$L=\{L_{x_1}\oplus L_{x_2}…\oplus L_{x_{k}}\}$ ,而 $L$ 的方程也是由 $L_{x_1},…,L_{x_{k}}$ 的方程异或出来的。 设 $L_y\notin L$ ,考察环 $\{L_y\}\cup L$ ,可以发现,就是对 $L_{y}$ 中的所有元素取个反,设 $f(L)$ 表示 $L$ 代表的元素。 考察 $f(\{L_y\}\cup L)-f(L)$ ,可以得到其在 $L_y$ 上的每个点的分量是 $±2$ 。 现在证明,每个基都可以求出来。 对于等价类 $L=\{L_1,L_2,…,L_k\}$ ,假设其补集为 $L’=\{L’_1,L’_2,…,L’_t\}$ ,那么我们这么计算: 这个值是多少呢? 假设对于一个点 $x$,其的等价类 $\cap L’≠\emptyset$ (设交集为 $A$),那么其的系数可以用下面这个式子证明为 $0$ : $f(S\cup a)+f(S)$ 在 $x$ 处的分量为 $0$,其中 $a\notin S$ ,即可证明。 假设为 $\emptyset$ ,但是等价类为 $L$ 的一个真子集,假设 $a\in L$ 不在里面。 那么有 $f(S\cup a)-f(S)$ 在 $x$ 处的分量为 $0$,其中 $a\notin S$ ,即可证明。 可以证明,等价类在恰好等于 $L\cup L_1$ 的点的分量为 $±2^{|L|+|L’|}≠ 0$ ,其中正负号一致。 证毕。证明
因为我当时犯了这个错误
高中的时候,我知道了那个异或环的性质,但是不会证明,然后在今年会证了,这个结论在去年知道了,今年也会证了,感叹时光的流逝,在我会证明这些结论的时候,也是我即将退役的时候,哎。