2022 China Collegiate Programming Contest (CCPC) Weihai Site
中期梦游般的一场比赛。
其实在赛前的 vp 已有征兆,一周前 vp 了 CCPCF2021,中间也是两小时一题未出。这一周内 vp 的 CCPC2022 桂林也是如此,尤其在桂林 vp 得非常糟糕的情况下。
热身赛很猛,一发过了那道比较麻烦的线段树题,感觉状态还行,可惜比赛开演。
前期非常顺利,我和队友无间隔地签完了到,在队友写那道计算几何的时候我和另一个队友已经胡完其他三道题,此刻捏在手里的有八道题。进行了二十分钟的讨论,那道构造也基本有思路了,这时候我觉得已经很稳了,没想到这才是梦游的开始。
我很快地开始写 K,本以为我已经想清楚所有,但其实写的时候一直断断续续,很多细节都是我未曾考虑过的,甚至还漏了一个大问题。很快我调出了样例一交,WA 了。然后让队友写 J,我看我的 K。很快,队友的 J 也 WA 了,这时候我感觉大事不妙,给 K 添了一些新的细节特判交上去还是 WA。这时候的指挥系统就出问题了,我应该让队友写 D,我来看 J 的,但当时已经迷糊了。两人分别调自己的花了半小时后,我才做出这个决策。很快我就看出了队友的 J 哪里写错了,但队友没有想清楚怎么改,尝试了十几分钟后继续去写 D,这里又浪费了不少时间。耗着耗着,已经要封榜了,这时候队友终于过 D 了。我赶紧让他去看看 K 发生了什么,然后火速改了他的 J,成功一发通过。这时候队友发现我的 K 发生了一个巨大的问题:根本没考虑区间相交的情况。这时候我仍然觉得能开出其他题,于是就让他在那里改了。这也是错误的决策,因为我督促他写能赚到更多罚时,而开题只是一件不大的概率事件。队友写完了,WA 了,然后一直添加特判交。很快就爆了非常多发。此时我也急了,观察了许久后,在最后只剩十分钟不到的时候,我终于发现一个早期的特判我写错了,改了就立刻过了,可惜罚时已经爆炸,无力挽回了。
从赛后复盘来看,我发现互换调题其实很正确,不应该总想着能多过点题,但这时候因为威海没有 Au 心态炸裂,这为广州的崩盘埋下了伏笔。
[A Dunai]
solution
题面:TI 比赛有
做法:签到题。
[B Recruitment]
solution
题面:给定一个长度为
做法:
[C Grass]
solution
题面:给定平面上
做法:队友写的分类讨论几何题。
[D Sternhalma]
solution
题面:给定六边形棋盘每个格子的分数,询问若干初始的棋子摆放 方式,问按照规则移除棋子最多得多少分。
• 移除棋子有两种方式,一种是直接移除一个棋子,不得分; 另一种是用一个棋子跳过其相邻棋子,移除被跳过的棋子并且得分增加被移除棋子所在的格子的分数。
做法:状压+拓扑排序。
[E Python Will be Faster than C++]
solution
题面:给出
做法:可以直接推出通项。
[F Mooncake Delivery]
solution
题面:给出一张每个顶点
做法:考虑一条路径的答案是啥,发现就是同色段的与下一个色段的头的和的最大值。那么考虑直接建图,同色连通块内直接弗洛伊德,枚举同色段的头和尾以及下一段的头,从头向头连边,那么再跑个类似弗洛伊德的东西即可。时间复杂度
[G Grade 2]
solution
题面:多组询问,求
做法:有循环节。
[H Party Animals]
solution
题面:有一行人在玩石头剪刀布。每个人均有一个最喜欢的手势 (石头剪刀布之一),每次游戏每个人均会使用其最喜欢的手势。两个人玩完一轮之后输的那个人的最喜欢的手势会变成赢的那个人的手势。
• 现在给出这行人每个人的最喜欢的手势,你需要进行两种操 作:
指定一个区间,该区间内每一对相邻的人从左往右依次进行游戏;
查询某个人最喜欢的手势。
做法:
[I Dragon Bloodline]
solution
题面:合成一个龙蛋需要
• 有
• 你需要将每条工具龙分配去生产某种精华,并最大化每单位时间内能产生的龙蛋数量。
做法:二分+贪心,贪心策略是用堆每次取当前位数的即可,多了的直接每次干掉一个。
[J Eat, Sleep, Repeat]
solution
题面:给定
做法:可以注意到只有
[K I Wanna Maker]
solution
题面:有一个集合包含
: 这个集合存在 个元素,并且这 个元素和为 ; : 这个集合不存在 个元素或者没有 个元素和为 。 • 问你有多少个合法的集合?
做法:大概是你推推不等式能发现一些限制,一些限制是两边夹,一些限制是或关系。或关系的可以被前者决定一部分,另一部分排个序可以一个个算过来,细节很多,比如区间可以交,比如开始时的一些无解判断。
[L Novice Magician]
solution
题面:设
• 设第
• 构造一个使用魔法的方案,即构造每个魔法的值
做法:
[M String Master]
solution
题面:有一个无限长的字符串
做法: