CF1404 Div1 VP记录
A
略
B
看到这道题的第一眼:Bob 怎么赢?
样例二给了解释,对于一条链,Bob 看 Alice 到了哪边,跳到另一边即可。
大胆猜测,这是 Bob 能赢的唯一机会。其他时候 Alice 采用步步逼近一定能取得胜利(详情请参见国际象棋中的单后杀王)。
使用这个方法要满足三个条件:
-
\(db > 2 * da\)。否则 Bob 逃不出 Alice 的抓捕范围。
-
树上直径也要大于 $ 2*da$。否则 Bob 空有 \(db\) 也没用。
-
Alice 第一步不能直接将 Bob 干掉。
依次判断即可。
C
考虑离线。对于\(y \in [1,n]\),\(f_i(i\le y)\) 表示询问为 \((x,y)\) 的答案。
当 \(y\) 变为 \(i + 1\) 时,只有 \(i - a_i \le f_i\) 的 \(f_i\) 才会 +1(此处只考虑 \(a_i\le i\) 的情况,大于的情况显然永远不可能满足)。
于是树状数组 + 二分即可。
D
通过这迷惑的题意,我们大胆猜测无论哪种情况下,必定有一方有必胜策略。
根据样例,大胆猜测当 \(n\) 为偶数时,作为配对的人, \(i\) 与 \(i + n\) 放一组即可。
思考最终选出的和,必定是 \(\sum^{n}_{i=1} + nk\) 的形式。其中 \(k\) 为选了多少个大于 \(n\) 的数。
这绝对不可能是 \(2n\) 的倍数,因为这个式子可以化成 \(n(\frac{n+1}{2} + k)\),括号内压根不是个整数,自然也不可能是 \(2\) 的倍数。
因此我们只要考虑 \(n\) 为奇数的情况。揣测一下出题人的意图,我们猜测此时选择方有必胜策略。
不难发现,当 \(n\) 为奇数时,只要对于每个 \(i\) 与 \(i + n\) 中选择一个,结果(也就是上面的式子)只有两种情况:是偶数,或者反着选就是偶数。
问题变成了:\(i\) 和 \(i+n\) 不能同时选,同时还有额外 \(n\) 组 \(u\) 和 \(v\) 不能同时选,求出一种选择方案。
如果将所有限制连边且允许重边,每个点有且仅有两条边与之相连,因此整个图必定是若干个环。
又因为环上相邻的点不能同时选,所以我们隔一个选一个即可。
E
每个点只有两种情况:竖着或横着。且两者只能选择一种。我们不妨用两个格子中间的分界线作为竖放和横放的标志。
因此,如果一个点有两种消除边界线的方式,我们就把他们两个连边。显然,连完边后是一张二分图,其中所有竖着放置的方案在一边,横着的在另一边。
在这个图上选取的点都能使答案减小,因此我们希望选取最多的点。这就变成了一个最大独立集的问题。
用匈牙利算法求解即可。