CSP2022游记
考前一定不要复习算法——zxy
Day -1
摆烂的一天,看了下 OI Wiki ,然后睡觉去了。
Day 0
上午开始打板子,打了遍线段树,树剖,淀粉质,觉得没有乐趣,于是把去年没做的 NOIP2021 T1 打了。什么,黄题都打了1h,那寄了。中午突然想起要写团校作业,网上搜了几篇,但没有抄。下午 关于我到 晚上没有看任何的知识点,美好的一天结束了。8:00 才发现没交团校作业这件事。
Day 75000006
美好的一天从睡到 10:30 开始,起来依旧很闲,随便翻了几篇 blog 和日报,看了一下有关暴力骗分和随机的小寄巧。下楼随机游走舒缓心情 0.5h,饭后赶到了一中和外校同学们面基候考,等了一个多小时才进去。
Day 1
14:25
当第一下打开 CSP2022.pdf (密码belief2022)时,我对三道图论小清新题感到大受震撼。题面看完后,不出所料没有一道一眼题。我根据多年的寄验,毫不犹豫地开了第一题。
14:35
T1题意[CSP-S 2022] 假期计划,大概是依次选择图上的4个不同点 A,B,C,D,使得满足点 1A,AB,BC,CD,DE 的最短距离
详细数据点如下。
| 测试点编号 | |||
|---|---|---|---|
尝试拿满分,发现还是过于超前了,于是考虑 1~8 的 40pts 发现是送分点,枚举四个点再判断合法即可,时间复杂度
14:45
接下来考虑 9-14 的点,想了10分钟发现可以枚举 B,C 两点,这里定义两点距离 B 和 1 相连的点作为 A ,同时与 C 和 1 相连的点作为 D ,暴力枚举 A 且满足 A,B,C 三点不同,对于每个 C 把它相连的 D 统计一下排个序,暴力选择前四个即可,为什么是前四个呢?因为 D 可能与 A,B,C 重复。时间复杂度 70pts。
15:15
然后想了很久,回想 70pts 的做法时脑子突然灵光一闪,既然 C 和其相连的 D 与 B 和其相连的 A 其实是等价的,那么我们可以不枚举 A,直接从 B 相连的点中选择最大的,选 D 同理,但要如何去重呢?其实可以对每个点维护与它相连的点中最大的三个,接着枚举 B,C 优先选择最大的 A 和 D 如果 A 与 c 重复则将 A 推后一个,D 与 B 同理,最后查看 A 与 D 是否重复,若不重复则选择当前的,否则将 A 或 D 推后,时间复杂度 100pts (至少考场上这么认为的)。
15:40
开T2,题意[CSP-S 2022] 策略游戏,大概是两个人,每个人一个数组, q 组询问,询问第一个人在第一个数组的
详细数据点如下。
对于所有数据,
| 测试点编号 | 特殊条件 | |
|---|---|---|
| 1, 2 | ||
| 1 | ||
| 2 | ||
| 无 | ||
| 1, 2 | ||
| 1 | ||
| 2 | ||
| 无 | ||
| 1, 2 | ||
| 1 | ||
| 2 | ||
| 无 |
其中,特殊性质 1 为:保证
特殊性质 2 为:保证对于每轮游戏而言,要么
感觉十分套路,分类讨论了一下后发现是个水题。
对于第一个人,如果他选择的数字是正数,第二个人总是会选择尽量小的数字,所以当第二个人不能选负数时,第一个人就选最大的正数,否则选择最小的正数,保证价值最大。
同理,当他选择负数时,第二个人总是会选择尽量大的数字,所以当第二个人不能选正数时,第一个人就选最小的负数,否则选择最大的负数,保证价值最大。
还有一种情况,当第一个人选择 0 时,价值始终为 0,不能遗漏。
于是,可以对 A 维护五个 ST表,分别表示正数最大,正数最小,负数最大,负数最小,以及是否含有 0,对 B 维护两个ST表,分别表示最大,最小,分类讨论即可。
代码细节较多,调了很久。
时间复杂度 100pts。
16:50
此时的我意识到一个严重的问题,只剩下 1h40m 了,此时不打暴力,更待何时。于是我开了T3,题意[CSP-S 2022] 星战,大概是一张有向图,q 次修改,每次修改有4种类型,分别是
- 断开一条边。
- 断开汇集到一个点的所有边。
- 连接一条边。
- 连接汇集到一个点的所有边。
每次修改后询问图是否同时满足以下条件
- 图中所有点出度为
1。 - 图中从每一个点出发都可以找到环。
详细数据点
对于所有数据保证:
| 测试点 | 特殊限制 | |||
|---|---|---|---|---|
| 无 | ||||
| 无 | ||||
| 保证没有 |
||||
| 保证没有 |
||||
| 无 | ||||
| 无 |
一看就是不可做题,开始思考暴力。
17:10
猛地发现一个性质,就是第二个判定条件只要判定条件一成立就一定成立。
证明很简单,假设原图分为几个连通块,每一个联通块内的边数一定等于点数,那么总会有点多出一条边形成环,而每个点都有出边,所以总能指向那个环,说白了就是一个有向的基环森林。
于是考虑暴力维护点的出度和删边情况。
对于 1~8 的点,时间复杂度 9~12 的点,时间复杂度 60pts。
此时的我:欸既然这道题这么好骗那正解是不是也不难,逝一逝吧。
18:00
不行了,真的不行了,得开T4暴力了。
题意[CSP-S 2022] 数据传输,大概是一棵树,q 次询问,每次给出起止点,要求将树上任意点以及起点终点设为特殊点,保证将特殊点以某种方式排列时,相邻特殊点在树上的距离
详细数据点
| 测试点 | 特殊性质 | |||
|---|---|---|---|---|
| 是 | ||||
| 是 | ||||
| 是 | ||||
| 是 | ||||
| 否 | ||||
| 否 | ||||
| 否 | ||||
| 否 | ||||
| 是 | ||||
| 是 | ||||
| 否 | ||||
| 是 | ||||
| 是 | ||||
| 否 |
特殊性质:保证
由于没有时间,稍微看了看发现打 LCA,性价比实在不高。
又看了一下,发现当
火速打了个暴力 DP ,时间复杂度 28pts。
18:15
开始检查文件名,文件读入读出和 long long ,检查无误后再看T4。
发现 76pts 但没时间写了,而且虚拟机坏了,还要去后排调代码,于是放弃了。
最终考场预估分数 pts
Day 25000003
考试结束了,同学在一起吃饭。
这次大家分数普遍偏高,估分基本上都有 200+ ,此时我还没有意识到事情的严重性。
Day 50000005
回家后,在 InfOJ 上交代码,发现T1挂了 35pts QAQ,想法估计没错,估计是代码打错了,但我不是过了拍吗?
于是我永远记住了,对拍不要用太水的数据。
后来在洛谷上交了,T1只挂了 10pts 又有了些期待,希望CCF数据水一些吧。
Day 2
回头想了想T4,发现就是个烂大街的矩阵乘法套 DP 啊啊啊啊我的 72pts 木有了。
InfOJ 上更新了数据,T1少挂了 5pts 但愿官方数据水一点吧(最好像去年T1 70pts),求求了CCF QWQ。
Day 3
改了一天的题,一开始以为T1是没赋初值导致的挂分,改了之后发现还是挂了,于是打了个暴力拍,1e6+ 组,十分痛苦。后来呢,猜猜咋地,原图只说了保证有解,没说保证连通,而自造数据是先造了一棵树,于是怎么拍都拍不出不连通。无语了。。。
总结
反正一等奖稳了,没啥好说的。
做题顺序上有点问题,要是最后先开T4就好了,不打矩乘也有 76pts 啊。
前两题整整做了 2h20m,应该做快一点的。
T1对拍太弱了,以后对拍数据造的大一点。
最终得分应该在 250~280pts 。
NOIP2022 RP++