NOIP 2025 游记
释怀了,略有遗憾,但这是一场很爽的比赛。
开题,T1 看上去和 CSP 的 T1 风格很像,一上来胡了个假贪心,直接就被卡了,观察一下性质,发现最优决策下只有一种糖果会被买很多次,枚举买一种糖果的状态,随便算算就结束了。40min结束战斗。
然后开始看T2,20min后毫无思路,看了 T3 和 T4,感觉都不是什么人类做的东西,算了算两个题把暴力拼满也才只有23pts,并且可能要写 4k 左右的 code,思考了一下决定先不写,而且太久没写代码了,T3 和 T4 我编的做法太复杂了,评估了一下完全没有信心来写。此时距离考试结束只剩下 3h,我决定先冲 T2 看看,要是无果我就拼暴力了。
出去上了个厕所,洗了把脸,T2 突然有点感觉了,推了推发现怎么样例不太对,仔细读题发现题读错了,但这个不是我的问题,下来讨论发现人均读错题,写题面的人能不能带点脑子?彻底读懂题了之后尝试用形式化的语言描述这个题:$n$ 个物品,每个物品有一个价值 $a_i$,你有一个承重为 $m$ 的背包,现在你可以为每一个物品赋予一个重量 $w_i$,并且 $w_i$ 只能是 1 或者 2。求有多少种赋值方案能够使得采用性价比策略得到的最大价值与理论最大价值相等。
题理清楚了之后,我开始逐步考虑做法,首先思考我思考我要用什么样的策略进行计数,正着做显然很难做,我开始思考怎么样反着做,去计算有多少种不合法的方案。不合法也就意味着性价比策略有问题,思考何种情形才会使得该策略出现问题,观察到策略的问题出现在当一个物品重量是 2,但背包容量只有 1 可能出现问题,因为此时考虑最后一个放入背包承重为 1 的物品价值以及未选物品种价值最大且承重为 1 的物品价值,二者总和若小于前者,该策略会出现问题,当然也有可能根本不会出现第二个承重为 1 的物品,稍加思考会发现这两者本质相同,并且当且仅当这种情形性价比策略才会出现问题,这是可以严格证明的。
当我观察到这一步,已经只剩下 2h 了,但此时我认为我已经相当接近正解了(实际上还有很长一段路),决定继续冲刺,此时抽象的性价比策略已经变成了具体的情形,我只需要对此进行计数即可。枚举重量为 2 的物品 $a_i$,以及冲突物品 $a_j$,剩下要算的东西就变成了 $\sum_{i}\binom{i-y}{i} \binom{m-y}{x-i}$,范德蒙德卷积搞一搞可以 $O(1)$ 计算。最后 1h 开始写代码,没有调完。
赛后发现 T2 给到紫了,感觉我的脑子不是很笨,太久没写代码了,结局意料之中。