CSP贪心记

考之前

有点慌,自己已经高二了,但是平常打模拟赛基本都在打暴力,写出 T2 都是小概率事件(可能有一定原因联考出的太难了,但本质还是自己太菜了),大家都会的典中典 ds 题也不会。自己做题,经常做不出绿题和蓝题,写真题的时候也是效果不怎么好。唯一的慰藉是,极小概率会考的比去年低。

倒数第二天,学校运动会纯在摆。最后一天,写了几道模板,吃了火锅,回家看了会电视直接睡。考试当天上午,11 点前一直在刷 B 站,最后一个小时继续写模板。中午睡觉的时候非常担心考平衡树,因为很久没写了,上午本来打算复习,结果看手机去了。

考场上

两点十分到学校,没看到同学,好像他们都来得比较早。在同一个考场看到了 gmm ,后面还发现了 lyr 。稍微修整了一会,比赛就开始了。考场有一些神人,刚开考就开始敲键盘,巨用力,我真的想问手不痛吗?在这样喧嚣的环境下,看 T1 花费 eps 秒冒出了贪心想法,先每个人选最优,如果不合法,我就考虑枚举先全取一个部门再贪心调整到 \(n\over 2\) 个,感性比较对,就说等会回来证一下就写。又看 T2 发现是最小生成树,观察数据 \(k\le 10\) ,枚举村庄再暴力就直接获得了较高分,意满离。T3 读错题了,以为可以替换多次,完全不会,有点畏惧跳了。T4 感觉是非常有 AT 风格的计数题,尝试了 dp 和容斥,没有直接找到比较正确的思路。决定回去细想 T1,T2。

T1 简要证明了保留 \({n\over 2}\) 个是不劣的,手玩样例验证了一下,直接开写,快速通过。再看 T2,发现显然只能用最小生成树,但 \(m\) 太大,不难注意到 \(n\) 比较小,希望时间复杂度与 \(n\) 有关,脑海瞬间有了只保留原图最小生成树上的边,反证了一下很对。一算时间复杂度 \(O(2^knk)\) 有点紧,尝试继续优化无果,选择相信 CCF ,直接写。比较快速的通过了大样例,跑的有点快 \(0.3s\) ,打开数据一看没满,所以自己又果断造了几组拉满的数据,一测 \(0.7s\) 感觉还行就没卡常直接想后面的题。

这个时候是 \(4\) 点多,不到两个小时,切了前两道题,从来没在正赛打过这么顺风的局,我感觉 NOIWC 已经在向我招手了。事实证明,人不能被喜悦冲昏了头脑,故事从这开始转折。开始看 T3 ,发现多次替换基本不可做,就开始看样例了,没发现部分分有什么用,开始怀疑题意,意识到可能只能换一次,再读题发现真只能换一次。暴力就有了想法,找第一个 \(t1\ne t2\) 的位置,枚举其对应第几个替换的第几位,就是 \(ql\) 的,可以获得 \(50\) 分。再想特殊性质 B ,发现重要的只有 b 位置和差值,一开始以为处理完随便做(其实是二维数点,当时没发现)又拼了 \(20\) 分。兴奋地开始看 T4,希望拼上 300 。全排列是简单的,\(m=1\) 很自然的容斥,性质非常好。再看 \(s_i=1\) 发现根本输不了以为是 \(n!\),然后 \(m=n\) 不是一样吗?这么善良?(一算 \(320\) ,朱波已经不知天地为何物了,聪明的朋友应该发现我没注意到 \(c_i\) 可以为零)。这时应该过了半个小时,如果从这个时候开始写暴力,结果会不会不一样?我问我自己。

成也贪心,败也贪心。因为去年的大众分是三百二十多,所以还想再挣点分,开始尝试思考 T3 ,T4的正解,以为暴力比较好写,只留了一个小时写暴力加十分钟检查前面的。半个小时,毫无收获,开始写 T4 暴力,写完,一测大样例3,发现假了,又思考了自己做法,很真,打开输入一看 \(c_i=0\) 没救了,假完了。尝试改进,失败了,安慰自己没事,加上 T3 300 左右也行。

回去写 T3 的暴力,先写的特殊性质 B ,一开始以为处理出来后可以暴力枚举,发现 \(O(nq)\) 可以获得 \(0\) 分的好成绩,再想排序,将差值相同放一起,双指针即可。写之前再一想不对啊,还有一个限制,直接排不是假完了。一看条件的形式,悟了,二维数点,不好写,就说先写 \(qL\) 的暴力,用 hash 处理中间的值即可。还有 40 分钟写暴力,还能活,为了方便,先写单 hash ,打算过了再改双 hash ,非常傻逼的是,到现在为止,我都没想明白,一道基本是 hash 模板的题,我写错在哪?随着时间的流逝,我的内心越发焦急,如果这个暴力写不出来就坠机了,我该怎么办?很快就剩 10 分钟了,我还没检查前面的代码,也还没交题,监考老师第二次重复让我们交题,我只能回去检查加交题,最后剩几分钟还在挣扎,但是样例 \(1\) 一直输出 \(1,0\) 彻底没救。最后还是把可以获得 \(0\) 分的代码交了上去,当做我写过这道题的纪念吧。

考之后

出去和同学吃饭,没有人均三百分,不然可能真的吃不下去,但不少人都会 T3 的正解,大失败。一开始在闲聊,听某些 P 话哥说 P 话,后面玩了图寻和UNO,打台球没去,回家玩一个大火的四字游戏,【数据删除】。

第二天,发现自己离 T3 的正解非常近,性质 B 的二维数点做法,稍微推广一下就是正解。T4 \(m=1\) 启示的容斥做法因为不会某个 trick 遗憾离场,直接的 dp 做法,撞到了比较像的状态(但没有意思到大于 \(j\) 的可以先不考虑),一心打暴力,也没有细想。赛后比较快的改了两道题,比去年强,但是还是太弱了,最后两道题都处在差一点的状态里,不知道 NOIP 前这一个月能否再进一步。

深刻反思了自己最后两小时 \(20\) 分的光辉战绩。主要问题是对自己代码实现能力的盲目自信,对暴力算法没有仔细验证,以及在考场没能维持心态的稳定。第一个问题,我的计划是每一道题,写的时候提前规定时间,明确用时。剩下的两个问题只能在联考中多加注意,刻意练习,希望能有所改进。

应该没希望去 WC 了,略有一点遗憾,学了很久的竞赛,当现在为止参加过最高级别的比赛就是 NOIP 了,希望退役前还是去看看不一样的风景吧。但也感到庆幸,这是 CSP ,不是 NOIP 不会让我现在就滚回去学 whk ,(如果 NOIP 这样失去 60-70 分有点难绷)。好好吸取教训,NOIP 再战一次。

posted @ 2025-11-03 21:02  exCat  阅读(17)  评论(3)    收藏  举报