题目 | 蒋贤蒙 | 王赵安 | 王智彪 |
---|---|---|---|
B | 0 | 0 | 0 |
C | 2 | 0 | 1 |
F | 2 | 0 | 1 |
G | 0 | 0 | 0 |
H | 0 | 0 | 0 |
I | 0 | 0 | 0 |
J | 2 | 1 | 0 |
给定一个连通图,要求将图上每个点染成 $\text{RGB}$ 三种颜色。对应边 $(u,v)$,如果 $u,v$ 同色,则该边染成 $u,v$ 的颜色,否则该边染成黑色。
要求构造一种染色方案,使得删除图中所有非黑边仍然可以使图连通,同时满足如下两个条件之一:
首先跑一遍 $\text{dfs}$ 树,然后用 $\text{RG}$ 两种颜色进行二染色,这样所有树边都是黑色边,图保证连通。
接下来,设 $c_0$ 表示 $\text{R}$ 颜色在点集中出现的次数,设 $c_1$ 表示 $\text{G}$ 颜色在点集中出现的次数。
若 $c_0\le \frac n3$ 或者 $c_1\le \frac n3$,则考虑构造第二个条件:将所有叶子结点染成颜色 $\text{B}$。
事实上,由于叶子结点在 $\text{dfs}$ 树上只有返祖边,所以所有叶子节点之间一定没有连边,即不存在颜色为 $\text{B}$ 的边。
另一方面,不妨设 $c_0\le \frac n3$,则所有颜色为 $G$ 的非叶子结点至少是一个颜色为 $R$ 的结点的父亲,所以所有颜色为 $G$ 的非叶子结点个数不超过 $\frac n3$。
由于颜色为 $R$ 的非叶子结点个数不超过颜色为 $R$ 的结点总个数 $c_0$,所有颜色为 $R$ 的非叶子结点个数也不超过 $\frac n3$。
所以叶子结点总个数一定不小于 $\frac n3$,且将叶子结点染成 $B$ 后 $B$ 出现次数一定最多。
若 $c_0\ge \frac n3$ 且 $c_1\ge \frac n3$,则考虑构造第一个条件:从深到浅贪心染色,如果当前结点颜色出现个数大于 $\frac n3$ 且相邻结点颜色不为 $B$,则染成 $B$。
事实上,设 $c_0=\frac n3+d_0,c_1=\frac n3+d_1$,根据上述构造,易知 $G$ 被染色成 $B$ 的个数不超过 $d_1$。
而由于是从深到浅染色,所以每个从 $G$ 被染色成 $B$ 的结点只会 $\text{ban}$ 他的父结点,不考虑 $\text{ban}$ 儿子结点。
所有 $R$ 结点的可选染色位置最多被 $\text{ban}$ $d_1$ 个位置,于是要从余下 $\frac n3+d_0-d_1$ 个位置中选出 $d_0$ 个位置,这一定是可行的。
同理,所有 $G$ 结点一定也可以选出 $d_1$ 个位置染成 $B$。
总时间复杂度 $O(n+m)$。
给定一棵树和两个人的初始位置 $s,t$。两个人在树上轮流移动,两个人走过的点都不能再走且两个人不能在同一个点。
每个人的分数为自己无法移动时走过的点数,两个人都希望最大化自己和另一个人的分数差,问最终先手的分数减去后手分数的值。
首先以先手为根建树,树形 $\text{dp}$ 求出每个点 $u$ 不经过 $s,t$ 链上的点能到达的最远距离 $a(u)$。设链上的点为 $v_1,v_2\cdots v_k$,其中 $v_1=s,v_k=t$。
定义 $\text{solve}(l,r,0/1)$ 表示第一个人位于 $v_l$ 第二个人位于 $v_r$,$0/1$ 表示轮到先手/后手行动的答案。
对 $\text{solve}(l,r,0)$,先手如果选择进入子树,此时答案为 $a(v_l)+l-1-\max_{l\lt x\le r}(a(v_x)+k-x)$。
如果选择不进入子树,则答案为 $\text{solve}(l+1,r,1)$。所以两种情况取 $\max$ 即可,后手情况类似。
上述转移可以使用 $\text{ST}$ 表,时间复杂度 $O(n\log n)$。