1. 前言
都过了一年了……
只参加了 CSP-S,因为感觉如果上午打 J 体力消耗较大。
自 THUSC 以来,没学啥算法,不过做了一些题,所以水平应该还是有提升的。
暑假是多校联训,不过感觉题目不咋样。
CSP 和期中正好撞上了,只停了一周课,剩下一周给期中。
期中寄了但没完全寄,只能说是在一周复习下的正常发挥吧。
怀着忐忑不安的心去参加这次 CSP。
2. 初赛
初赛还有说的必要吗(
不会负数取模和归并名字的二分。于是寄了,77.5,但是肯定过了。
被 HMZ 吊起来打。
3. 复赛
3.1 复赛前
考复赛之前的一周恰好是期中考试,但是期中考试周三就考完了,于是周四周五继续停课。
停课的时候就一直打板子,因为常年玩 acwing 的天梯,所以打板子的比赛次次都赢(
印象最深的就是有一次 线段树1 冲到了 2min32s。以前都是 2min55s 左右。
3.2 复赛当天
一直觉得我不太能切 T1,可能是去年廊桥分配留下的心理阴影影响了我吧,所以做题策略就是:尽量切 T1,剩下的多打暴力。
考场就在本校,不过机房因为是新建的所以没去过。和我同个机房的本校同学还挺多的。芦苇林 坐在我旁边,后面有 zztqwq、David24、HMZ、xuanxuan001(看他游记前都不知道是同一个机房的,还好没搞我心态)等。也有外校的,比如 kaixinguo(但是没看到)。
在 14:20 看到了题。
首先看到了 T1,发现比廊桥分配良心很多,又想了想,发现直接 \(dp_{i,j}\) 表示编号为 \(i\) 个点作为第 \(j\) 个点,然后暴力转移即可。
然后看到了 T2,吓我一跳。之前打赌一定不会考博弈论,而且博弈论我压根没学过。随便看了看就去看 T3 了。
T3 题面巨长,我压根不想读,就跳过看 T4 了。T4 看起来很可做,发现特殊性质就是树高 \(\log\),而 dp 只会涉及到一个点的邻居,所以直接 dp 就出来了。这下有很多分。
看完题基本上就到 14:30 了。为了求稳又看了一眼 T1 题面,不看不知道,一看吓一跳!题目要求四个点互不相同!原来的思路错了。我开始重新想思路。
这道题看起来可以随便乱搞,但毕竟是 T1,还是要想正解的。想起考前看的 NOIp2021 数列,比较妙的地方就是将状压 dp 转化成线性 dp。这道题也可以吧!但这道题的问题是,这四个编号不一定递增。之后就没思路了。又想了很多个乱搞,但都没实现。直到 20min 后,才有了一点思路:是不是可以 meet-in-middle?枚举 \(B,C\) 两点,然后算出 \(1\) 与 \(B,C\) 的公共部分,再怎么算一下?因为要求最大的,所以在不重复的情况下肯定选最大的几个。这样我的思路就出来了,对于每个点求出来它与 \(1\) 都能到的点的点权前 \(5\) 大,之后枚举 \(B,C\) 花 \(5 \times 5\) 的时间算一下。
这时是 14:50。花了 10min 写完了代码,测完了大样例,又造了一个极限数据测了一下时间,发现没问题,就去看 T2 了。此时大概是 15:05。
仔细读了一下 T2 题面,发现其实博弈论是诈骗,实际上是个贪心题。显然第一个人要选的是能使第二个人决策最小的点最大的那个点。这个点显然只会有 \(5\) 种取值:正数最大、正数最小、\(0\)、负数最大、负数最小。而第二个人应对第一个人也是这五种(中选最小),所以直接用 \(8\) 个 ST 表维护这两个数组的极值即可。想出来思路就开始写。犯了一些奇奇怪怪的错误,调完可能已经 16:00 了。不过这时候还以为大家都不会 T1,所以心态比较好(
之后还是不想读 T3 题面,就去看 T4 了。感觉赛前口胡的思路没有什么问题,又完善了一下思路,就开始写了。写完发现前三个样例都过了,而第四个没过。这时候我猜我的思路可能出现了一些问题。
我确信只带邻居做 dp 已经没有问题,但我的代码中带邻居的部分只有 \(k=3\) 的第 \(i\) 个点经过第 \(i-2\) 个点的邻居到达第 \(i-4\) 个点。想了一会,我发现邻居还需要另一种情况,就是一个点的邻居可以走到另一个点的邻居。只要在链上的权值特别大,而邻居全都特别小,这样就可以一直走邻居。
想到这一点,我以为需要将所有邻居放入 dp 中一起求,甚至还需要循环 \(30\) 次迭代。这样复杂度就升天了,不知道几个 \(\log\)。但我还是写了一下。写完后,大样例直接 T 飞了,跑了 30s 还没出来。我意识到有个地方可以直接记录然后优化掉一个 \(\log\),就写了一下,果然大样例出来了。又发现一个点的邻居只需要权值最小的那个,这个可以预处理,就又优化掉了一个 \(\log\)。最后用了一些常数优化就将极限数据卡进 3s 了。
这时还有半个小时,我打算全力冲 T3。我以为第一个条件是判断一个点是否处在一个长度大于 \(1\) 的环中。这样第一个条件就可以判断所有强连通分量是否大于 \(1\) 了。于是我开始写。大概花了 15min 就写完了。测样例,发现此时 codeblocks 的输入好像有点问题(第一个询问的答案在第二个询问后才输出)。于是我确信自己一定是输入写挂了,就一直调下去了。直到最后也没调出来。就只好交了一份连样例都过不去的代码。
最后离场的时候估分 \(100+100+0+64=264\)。
出考场的时候还以为大部分人 \(<250\),结果一问才知道全都 \(300+\),自闭了。如果我第三题更仔细的调一调就应该也 \(300+\) 了。
wz20201136 切了 T3,xuanxuan001 会 T4 但是没调出来,深刻感受到了与神犇的差距。
晚饭 nnsmnrw 老师请客,以为是出去吃饭,结果是去教师食堂吃的(
不过有一个大蛋糕,还不错。
3.3 复赛后
在各大平台测试了一下,发现 T1、T2 都没挂,而 T4 计算错分了,是 \(68\)。T3 果然爆零了。
评测的分数如下:
洛谷:\(100+100+5+68=273\)。
infoj:\(100+100+0+68=268\)。
计蒜客:\(100+100+0+68=268\)。
小图灵:\(100+100+5+68=273\)。
在小图灵上看我这个成绩可能是 BJ 初二 rk3,相较去年没有任何进步,自闭了。不过这些人甚至没有 \(300+\) 的(而且他们 T3 都 \(\ge 60\)),而且 T1、T2 中至少有一道题挂分。所以如果 CCF 使劲卡 T1、T2 的错解,我还有可能 rk1((
upd1: T3 读对题之后又写了 40min 才得了 \(60\),看来考场如果没读错题可能也没有 \(60\),不过可能 \(40\) 或 \(50\) 还是比较好拿的。
upd2 on 2022.11.7: 这一次 CCF 又让人大跌眼镜了。T1 居然放了不开 long long 的做法,T3 全输出 NO 有 \(45\)。而我 T3 因为转化错题意了所以只有 \(25\)。于是最终成绩是:\(100+100+25+68=293\)。大家好像都上 \(300\) 了,我垫底了。这个成绩 BJ 初二能不能进前 \(5\) 都是个问题,退步了好多。
upd3 on 2022.11.7: 可能负面情感的来源都是基于比较的吧。因为 HMZ 得了 \(312\),所以我郁闷了一会。不过现在感觉他得到这些分也是侥幸的,而我该拿的分都拿到了。每场比赛基本上都会有失误,T3 的失误也不是特别严重。这个成绩已经满意了。
4. 总结
感觉这一次发挥还可以,这也是我第一次在官方考场上切掉蓝题(T1,NOIO 的丹钓战当时甚至不会)。不过后面的发挥有点差,主要是心态的原因。
当时还剩 30min 看到 T3 时的心态是:“如果能拿分更好,拿不了分也没关系。”但没想到读错题了,读错题情况下暴力是 \(20\) 或 \(40\) 分,但正确题意下 \(60\) 分有手就行。这是一个比较大的失误。还是需要每一刻都尽可能地拿分。
T4 实际上压根不需要迭代,直接顺着 dp 就行了。T2、T4 写代码时间还是太长了,应该想到更加好写的写法、争取一次写对。
接下来冲刺 NOIp,还是按照一贯的复习风格复习:多做简单题,练习代码能力,也做一些有点难度的题。与此同时我应该也练一练读题能力而不是总挑好读的题做、让同学概括题意。
标签:CSP,邻居,T4,T3,T1,2022,100,游记,dp From: https://www.cnblogs.com/lotus-f/p/17060532.html