CF1404 Div1 VP记录

A

B

看到这道题的第一眼:Bob 怎么赢?

样例二给了解释,对于一条链,Bob 看 Alice 到了哪边,跳到另一边即可。

大胆猜测,这是 Bob 能赢的唯一机会。其他时候 Alice 采用步步逼近一定能取得胜利(详情请参见国际象棋中的单后杀王)。

使用这个方法要满足三个条件:

  1. db>2da。否则 Bob 逃不出 Alice 的抓捕范围。

  2. 树上直径也要大于 2da。否则 Bob 空有 db 也没用。

  3. Alice 第一步不能直接将 Bob 干掉。

依次判断即可。

C

考虑离线。对于y[1,n]fi(iy) 表示询问为 (x,y) 的答案。

y 变为 i+1 时,只有 iaififi 才会 +1(此处只考虑 aii 的情况,大于的情况显然永远不可能满足)。

于是树状数组 + 二分即可。

D

通过这迷惑的题意,我们大胆猜测无论哪种情况下,必定有一方有必胜策略。

根据样例,大胆猜测当 n 为偶数时,作为配对的人, ii+n 放一组即可。

思考最终选出的和,必定是 i=1n+nk 的形式。其中 k 为选了多少个大于 n 的数。

这绝对不可能是 2n 的倍数,因为这个式子可以化成 n(n+12+k),括号内压根不是个整数,自然也不可能是 2 的倍数。

因此我们只要考虑 n 为奇数的情况。揣测一下出题人的意图,我们猜测此时选择方有必胜策略。

不难发现,当 n 为奇数时,只要对于每个 ii+n 中选择一个,结果(也就是上面的式子)只有两种情况:是偶数,或者反着选就是偶数。

问题变成了:ii+n 不能同时选,同时还有额外 nuv 不能同时选,求出一种选择方案。

如果将所有限制连边且允许重边,每个点有且仅有两条边与之相连,因此整个图必定是若干个环。

又因为环上相邻的点不能同时选,所以我们隔一个选一个即可。

E

每个点只有两种情况:竖着或横着。且两者只能选择一种。我们不妨用两个格子中间的分界线作为竖放和横放的标志。

因此,如果一个点有两种消除边界线的方式,我们就把他们两个连边。显然,连完边后是一张二分图,其中所有竖着放置的方案在一边,横着的在另一边。

在这个图上选取的点都能使答案减小,因此我们希望选取最多的点。这就变成了一个最大独立集的问题。

用匈牙利算法求解即可。

posted @   _maze  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示