生活不可能像你想象得那么好,但也不会像你想象得那么糟。——莫泊桑《羊脂球》
我觉得人的脆弱和坚强都超乎自己的想象。有时,我可能脆弱得一句话就泪流满面;有时,也发现自己咬着牙走了很长的路。——莫泊桑《一生》
其实备考这件事早从八月份就开始了,然而一上考场还是觉得自己很菜…
其实确实很菜!!!
在家复习了一波初赛,复习了计算机常识。
SMSC 2021
SMZX 暑假常规集训开始,这一次请了两位清华北大的学长回来上课,也请了雅礼中学的大佬过来交流。每天一场模拟赛,下午评讲,晚上讲讲课。上课内容有可持久化数据结构、概率期望、DP、数论与数论函数及其拓展、组合数学拓展、图论网络流等,收获很大。模拟赛的质量也很好,有一些题目很有意思,有时候并没有十分高深的算法和数据结构,而是考察发现性质,联系知识和数学推理的能力。这么好的题肯定要细细品味啊,于是就顺手写了 7 篇记录,当场高产,当然其中还有一些题还没有理解好,没有总结…
发现自己被初三、高一吊打,很尴尬…
在家颓废,暑假作业还有一半没写。
复习了树状数组,总结了一些技巧。
疯狂模拟测,今年训练强度加大了,教练 LGJ 应家长要求,调动三位信息组的老师轮流看班,防止我们划水…这也挺好,毕竟上一年的这个时候模拟测的强度没有这么大,上考场的时候心里没有底,于是就炸了…但是!这个模拟测的思维难度真的是!测到我怀疑人生,我太菜了,一般只能 A 一题,其它题的部分分也很难想,有两三场直接爆零,可能也是因为时间不够的原因,晚修这么短时间没什么思路,有几题是在白天上课课余时间磕出来一些性质。到后面直接放弃了,因为要花时间复习初赛。
今年初赛竟然不在 SMES 举办了,还想着回母校再见见老师…可能是 YYC 一举拿下 NOI 金牌的原因,初赛举办地点在 南海外国语学校 。最后几天复习组合数学和期望,还有那难以拿分的完善程序。再次拿往年的题目练手,感觉一般,没有突飞猛进,不像当年打 CSP-J 的时候有感觉。
快初赛的时候,老师组织我们测核酸,再次成功在常规时间踏出校门,测完后直接步行回学校,想着赶上政治课,回到班发现政治课调到第二天了。这个学期还有物理和政治的合格考,所以政治课还是要听一下的。
初赛
早上好像 7 点就出发了,然后早早地在试室门前等。心里没有底,调整一下心态觉得尽力考就行了。然后再次遇见发小 Jimmy ,他上一年没有过初赛,我很惊讶他今年继续挑战冲击 CSP-S,大概是他还很喜欢信息学吧。其实我也挺惊讶我继续参赛的,我本来水平就不高,上一年的失误还比较多,可以说是浪费了最佳的机会了,同时身边也有个别同学退役,我是有一些动摇的,但是再想想,总觉得这件事情还没有做完,现在退役好像对不起我以前初中的努力和高中的努力,我应该再冲击一次,然后就决定继续参赛了。
和 Jimmy 聊天,FSYZ 今年也多了很多 OIers ,SMZX 今年也多了很多 OIers ,而且都是长江后浪推前浪,蒟蒻死在沙滩上。有一些感慨,也有一些小失望,失望自己没能找到很好的学习方法。
开始考初赛。
除了选择题 T1 考 Linux (我复习计算机常识复习了个寂寞…),一路做下来还算顺利,就算不是很会的题也有一点感觉去蒙,不过组合数学那几道做得比较久,不太熟练…数学不好。后面阅读程序也做了比较久,最后完善程序的 T1 匆匆切了,只剩 15min 写 T2 了,一看,笛卡尔树!这真就按 NOI 大纲出呗!再仔细看看,应该是类似与平衡树的样子,但是还是没能做完,最后几个选项直接蒙答案然后就交卷了。
感觉难度和上一年的差不多,完善程序的最后一题都是很难拿分的,其它题目的难度都是按题号递增的,感觉自己有 70.(记住这句话,待会打脸)
煎熬等待初赛成绩。
这几天继续模拟测,感觉自己晚修效率太低了,考虑停课。但是初赛成绩还没出,我也不太敢停,万一淘汰了就很尴尬。这段时间是最煎熬的,晚上做不出题,天天垫底,有人说过:“一个人最危险的时候,就是当他开始怀疑自己的时候”,总感觉自己 OI 学了个寂寞…然后真的是精神折磨。
9.28 那天中午,上信息技术课,顺手上 NOI 官网看,woc,广东终于出成绩了!心跳加快,血压升高,正当我要打开成绩单的时候,电脑老师控屏了…然后我就更紧张了,那 5min 里面,心率一直在 135 左右,而且听自己的心跳声很清楚,比坐过山车还刺激。
点开成绩单。
Ctrl + F。
输入考号。
55 ,晋级。(打脸 × 1 {\times 1} ×1)
我人都傻了。哈?55?我必没了。哈?晋级?怎么可能!看多了两眼,此乃真事。
心情很复杂,55?爆了!没理由啊,该做的都做了,不会做的也已经根据推算的结果选了呀!55!比上一年还低!我都不知道该说什么好了。继续自闭…
又是在国庆作业没怎么完成的情况下,参加集训。
最后还是决定要停课,毕竟最后一把了,再不好好珍惜这次机会就真的没了。
做了杨队 (YYC) 出的几套题,果然是金牌选手,出的题既有思维难度又不会超纲,这几天的题也是很有意思,虽然当时考场上可能做不出来垫,排名垫底很伤心,但是后面品味一下这些题,很有收获。深深感觉到是应该停课了,平时晚修时间太短,模拟测的题目根本来不及回顾和分析。
10.8 在班上的最后一天,完成英语课代表的职务交接,并考察过代理人后,安心地离开了。
开始停课。
复习计划都是按 NOI 大纲做的。
对于 CSP 20201,重心应当放在字符串算法、贪心、搜索、基础算法和动态规划上。
要适当复习图论、数据结构、数学。
基础数据结构:并查集、栈、队列、堆、树。
数据结构:线段树、树状数组、平衡树、单调队列。
基础算法:二分、三分、分治、倍增。
时间\内容 | 10.8 | 10.9 | 10.10 | 10.11 | 10.12 |
---|---|---|---|---|---|
早上 | - | 最短路 | - | 基础数据结构 | 连通 |
下午 | - | 最短路 | - | 基础数据结构 | 连通 |
晚上 | - | - | 最短路 | 基础数据结构 | 连通 |
时间\内容 | 10.13 | 10.14 | 10.15 | 10.16 | 10.17 |
---|---|---|---|---|---|
早上 | 动态规划 | 基础算法 | 贪心 | 字符串 | - |
下午 | 动态规划 | 基础算法 | 贪心 | - | - |
晚上 | 动态规划 | 基础算法 | 贪心 | - | 字符串 |
时间\内容 | 10.18 | 10.19 | 10.20 | 10.21 | 10.22 |
---|---|---|---|---|---|
早上 | 数据结构 | 搜索 | 数论与组合数学 | ||
下午 | 数据结构 | 搜索 | 数论与组合数学 | ||
晚上 | 数据结构 | 搜索 | 数论与组合数学 |
决定强化基础,提升算法板块。
我自己在早上选 3 题,从 7:30~11:30 模拟测 3h,下午选 2 题从 2:30~4:30 模拟测 2h,专题训练 + 综合测试。
教练 LGJ 也帮我们每两天组织一次全真模拟测,晚上测 3.5 个小时。
杨队也选了一些好题让我们做,我做不来,因为思维难度确实有点高(对我来说),我本不是很聪明灵活的人。不过想一想这些题,推一推性质也很有趣味,最后实在做不出来就求助均神(LJZ) 或者看看题解,这样也勉勉强强做了三四题。
这个强度我从来没有试过,所以适应起来很吃力,每天都十分疲劳,主要是早上下午自测结束之后,晚上很累,没什么精神,于是模拟测爆炸,然后看到自己排名垫底,又开始自闭…
决定重整旗鼓,专注于提升自己的能力,不要太在意排名,每一次模拟测都当作训练解题和骗分能力的机会,心态好了一些。其实我一直觉得我的心理有问题,因为总是太在意一次测试的排名和成绩,而且会不自觉的找人对比,想找优越感,但是实力不支持,然后就是失落、失望、自闭。我一直很希望矫正自己的这种病态心理状态,因为这真的是阻碍我进步的一个重要因素之一。
在最短路方面,又重新写了一遍总结,总结了一些常用的技巧;基础数据结构上,拓展了并查集的使用技巧,顺便和连通这一专题一起研究;动态规划方面,主要复习了树形 DP (树上背包,换根 DP) ,单调队列优化 DP ,也复习了一下状压,唯独没时间复习区间 DP.(记住这句话,待会打脸);基础算法复习了分治和倍增,二分也复习了一下;贪心方面,补充一篇总结,总结了一些常见的贪心模型,做了一些贪心的题,品味了一番;字符串很自然地复习 Hash 和 KMP , Trie 竟然忘记复习了…数据结构上,必定复习线段树,同时也看了平衡树;来到搜索板块的时候突然吃力!这很危啊!曾经得心应手的暴力搜索如今变得无从下手,我感受到了危险,因为搜索是骗分的重要手段;最后几天复习数论和组合数学,记结论,打板子。
最后几天每天都在模拟测,看到自己骗分骗不够,感到十分焦虑。
复赛考点还是在 GDFZ ,要提前过去附近住一晚。
第二次来生物岛,第三次来 GDFZ 了,十分希望自己能有些收获。
跟何队 (HJR) 住一间房,可以临时取取经。
在酒店连不上网,主要是因为借用酒店的临时网络只能上官网和网络登录界面,在官网完成注册后,不能借用临时网络到 QQ 邮箱验证。差评!何队和我到酒店大堂询问解决方案,结果借到了网线,我们以为这波血赚了。结果使用以太网也是要登录的,那没辙了,我俩又没有带手机。
幸好魏队及时出现,借他的热点完成验证后,终于可以使用酒店网络。
已经十点了,然后开始复习板子,边看边敲,不知不觉 11 点半了,时间过得太快了…和何队稍微颓了一会儿,准备睡觉。然后研究酒店闹钟研究到 12 点才设好闹钟睡觉。
早上 8 点起,吃早餐,刚好和其他人一起下来,高二集体用餐。吃完早餐休息之后 9 点多,回到房间继续复习,完全不敢放松,我一直十分紧张。
昨天向何队取了取经,他觉得主要考思维,平时模拟赛都训练过,不用太担心,但是我这猪脑子怎么能不担心(笑),我们都希望不要有像上年那样 T1 毒瘤题,不然就炸了。
在选板子的时候想着还是按 NOI 大纲来看吧,虽然像网络流有些板子是蓝色的,但是比赛不会考的吧。(记住这句话,待会儿打脸) 复习板子之后就开始写一些思路提示,帮助自己回顾一些常见的切入点与技巧。
11 点,LGJ 叫我们下去拿外卖,大家都是冬菇滑鸡饭,结果何队说他不喜欢吃冬菇,这很尴尬,他这一顿可能要饿着些了。YYC 粉丝群里大家在调侃午饭,氛围很欢乐轻松。我吃完之后继续看思路提示,一直到 12:25 才开始睡午觉。
12:45 何队醒了,我随即也起床了,大家收拾行李出发前往 GDFZ.
很可惜,Jimmy 还是没能通过初赛,我已经连续两年没能在复赛赛场上见到他了,我感到十分惋惜,有些失落。
在考场外我已经开始紧张了,脑子里完全没办法复习,只能搓手、走动,提高自己的兴奋度,调节自己的状态。尽管考前 3 天我就开始适应不睡午觉的节奏,但是此刻还是有一些倦意,我最担心的是考到后面差不多四五点就开始疲劳,因为考前我适应这种作息的时候,每次都是三点半开始精神恍惚,四点开始疲劳,没有精神做题。
洗脸,走动,小跳,搓手,渐渐地,人比较精神了,但是心态是真的紧张。
考生进入试室,我决定全程带着眼镜,让自己更集中一些(要知道,近视的人不戴眼镜看东西难免有一些模糊,模糊就会给自己带来疲劳困倦的感觉,尽管我不是深度近视,但是真的有过亲身体验)
考前一直提醒自己以一个小时作为一个阶段,合理安排时间,那么这里也以一个小时为阶段,写写我在这些阶段都干了些啥。
老规矩,宣读考生须知,看考生注意事项,解压试题。不过这次解压的密码没有什么含义了,今年没有彩蛋。
然后 5min 完成文件夹建立与编程环境配置,开始看题。
最开始解压完试题有 5 个文件夹,我还以为有 5 题,结果有一个 public
文件夹是空的,没有大样例。
开始看题 airport
,bracket
,palin
,traffic
T1 给我的印象是贪心,或者 DP ,因为看到求最优解。
T2 给我的印象是区间 DP ,感觉已经很熟悉了,应该有点把握,毕竟考前最后一套模拟题考了区间 DP.
T3 字典序最小,经典贪心,不知道思维难度如何。
T4 没看懂,大概是图论,DP.
5min 浏览结束之后,开始做 T1.
谨记 LGJ 的提醒,我放慢读题速度,仔细提取信息。发现航班占用廊桥的时间段可以看作线段,想到贪心中的区间覆盖问题。然后手玩样例,发现题意大概是要分配廊桥给国内航班(A)或者国际航班(B),然后不相交的区间可以用同一个廊桥,问怎么分配可以令尽可能多的区间使用廊桥。然后想到预处理出最长的不相交区间段,记录其中的区间数,然后将这些区间全部删掉,再继续处理最长的不相交区间段,如此处理之后,用 DP 或者贪心求答案。看到数据范围 n ⩽ 100000 n\leqslant 100000 n⩽100000 首选贪心。
然后发现处理最长的不相交区间段的复杂度有点大,如果直接暴力预处理,时间复杂度高达 O ( n 2 ) O(n^2) O(n2) ,考虑改进预处理的方法,想到用二分快速求出下一个最近的不相交区间,然后预处理复杂度降为 O ( n log n ) O(n\log n) O(nlogn) ,处理之后,给每个区间段按区间数目从大到小贪心排序, O ( n ) O(n) O(n) 计算出 ans[A/B][i]
表示给 A 或 B 组分配 i i i 个廊桥可以容纳的最大区间数,然后 O ( n ) O(n) O(n) 计算答案。
结果过不了样例…很尴尬,大概已经快 3 点了,回去看题。
廊桥的使用遵循“先到先得”的原则
那就意味着预处理完所有最长不交区间段后,不用排序,要严格按照时间顺序。
然后过掉了两个小样例,时钟显示 15:08
然后测大样例,结果挂了!答案 32 ,我输出 31 ,痛苦!
开始调 T1 ,然后由于担心出现上一年的情况,15:20 开始看 T2.
T2 的规则比较复杂,看题看到 15:30 ,第一阶段结束。
开始推式子,但是状态和转移都没有设计好,无从下手。
手玩样例,想到从内向外、从外向内、中心分治三种顺序,但是想不出来怎么设计状态和转移。
想到分类:
卡在第二点,企图回忆以前做这种括号区间 DP 的思路,但是!由于没有复习到,我挂了…(打脸 × 2 {\times 2} ×2)
很痛苦,考虑暴力,但是这个判断合法情况是真的没办法很直接地判断,于是搜索挂了…
16:00,回去调 T1 ,还是调不动,没有发现什么问题。
16:10 跳到 T3 ,一看好像做过,这不简单?上手开始敲,然后发现不对劲了,敲完以后样例也没有过。然后开始推性质。
推到 16:30 ,没推到什么有用的性质,跑去看 T4 ,然后终于把 T4 看懂了,染色问题,权值和最小,猜测可能是要考虑每一个点单独的贡献。
读者们,你们可别忘了我现在的处境是一道题未 A ,手上一分没有拿的情况啊!
我又跑回去调 T1,结果还是调不动,调了 10min ,回到 T2 ,想 DP 和暴搜,还是没思路。
从 T2 的规则入手,发现 S S S 要么被两段合法的包着,要么被 ()
包着,考虑分类讨论解决。
中途吃了口巧克力,让大脑误以为我在正常作息。(停课期间 4:45~5:00 开始吃饭)
结果还是老问题,如何计算两端不合法的合并。然后想到应该跳出这个思维定势,猜测一定存在两段合法的可以合并,考虑枚举这两段合法的分界在哪里,然后推翻了自己的猜测。然后也考虑记 f L ( i , j , p , t ) f_L(i,j,p,t) fL(i,j,p,t) 表示 [ i , j ] [i,j] [i,j] 作为左区间,有 p p p 个未匹配的左括号,有 t t t 个最靠右没有被括号包着的 *
的方案数,那么就有 g ( i , j ) = g ( i , j ) + f L ( i , k , p , t 1 ) × f R ( k + 1 , j , p , t 2 ) ( t 1 + t 2 ⩽ k ) g(i,j) = g(i,j) + f_L(i,k,p,t_1)\times f_R(k+1,j,p,t_2)(t_1+t_2\leqslant k) g(i,j)=g(i,j)+fL(i,k,p,t1)×fR(k+1,j,p,t2)(t1+t2⩽k) ,但是太紧张,脑子里出现空白,没能想到如何处理一些边界情况和特殊转移,然后就挂了…
想动手写暴搜,但是判断合法写不出来,然后果断跳回 T3.
17:00 想着 T3 写暴力吧,于是写了个 DFS ,还加了小剪枝,结果把大样例都冲过了!比较开心,看数据范围可以冲 40 到 50 分,然后 T3 收手。回到 T1.
17:10 终于发现 T1 的问题所在,因为我没有完全模拟区间的删除,我只是给选择了的区间打了 vis[x]=1
的标记,于是在二分的时候碰上这种被删除的区间,就没有办法决策如何改变搜索范围。但是除了二分已经没辙了,暴力必然 O ( n 2 ) O(n^2) O(n2) 爆炸,于是我先留着暴力的代码,手上先握着 40 分。
然后开始想怎么解决这一问题。发现二分真的没办法,复制数组又太花时间,然后突然想起了自己思路提示上的一句话。
O ( log n ) O(\log n) O(logn) 考虑二分、分治
我怎么不用分治呢!然后就开始写分治搜索,分治不仅可以充分调用数组区间段内信息,处理删除的区间也十分方便(受到教练 LGJ 和 YYC 推荐的好题 CF1442D Sum 的启发!),记得加上最优化剪枝就可以达到近似 O ( log n ) O(\log n) O(logn) 的复杂度。
然后我就过了大样例,手上已经拿了 140 分。
最后一个阶段,我想着在 T4 骗点暴力分吧。
不想不知道,一想吓一跳,手玩样例之后,一眼看出最小割。
但是!我没有复习网络流啊!(打脸 × 3 {\times 3} ×3)
完了,这下完了,然后尝试回忆 Dinic()
的写法,写到 18:00 写挂了…
T2,T4 暴力没写出来,直接输出样例和随机答案,企图骗 10 分。
回去检查 T1,并想 T3 的剪枝优化。
18:18 开始检查文件读写,文件名,运行 checker.exe
,18:28 监考员宣布考试结束。
出考场,一阵寒意袭来,华灯初上,是熟悉的场景。
在 GDFZ 门外,大家在讨论题目,我问均神:“T4 可不可以跑最小割?”
均神:“应该可以吧,李队(LAH) 说 T4 是网络流,我没时间写了。”
痛失 T4 部分分…(如果能打 NOIP ,我一定首先复习网络流!…)
看大家的讨论情况,T1,T3 都能拿分, T2 普遍难拿分,暴力分难打,DP 也难调,听说去重挺麻烦,不过岑队(CRC)好像切了 T2.
然后大家突然讨论到 T1,说是并查集什么的,我慌了…因为我感觉今年没考数据结构,有一点慌,怕分治搜索写挂了,也怕做法假了,后来想一想,复杂度没问题的吧,不管了,反正写都写了,别爆零就行。
坐车回 SMZX ,被告知学校没有留晚饭,路上在想怎么解决晚餐问题。
路上也听到身后两位高一大佬赵队(ZSX)和高队(GZW)在讨论题目,T3 是贪心,枚举最后取的那个数,然后用单调队列之类的数据结构搞一搞就过了?我仔细想了一想,确实有点道理,枚举最后取的那个数就能确定状态简化问题了,很佩服他们敏捷的思维和发现性质的能力。
跟着另外一个梁老师到学校外边吃饭,自己出钱,麦队打个包就回学校了,均神、涂队他们在另外一间餐厅吃,黄队(HYF)、魏队(WJT)、梁队(LHJ) 和我坐一桌吃饭,他们的餐上得早,于是早吃早走,我的餐上得最慢,于是我最后走…
回到学校看 Luogu ,有一些讨论,到 22:00 airport
,bracket
已经有民间数据了,LGJ 也已经将考场代码拿到,然后开始自爆。
T1 交上去一发。
全 WA ,爆零。
等等,哦,文件读写忘删了。
再交上去。
100 ,AC,恭喜你通过了本题!
心头大石落下!先稳住 100 分,先前还以为写假了,现在没事了。
然后回宿舍洗澡,结束 CSP-S2 的旅程。
0:05 看到 Luogu 上 T3 民间数据也有了,交了一发,40 分到手。
那没了呀!才 140 ,听天由命吧!
早上起来写 T4 的最小割,交上去得了 60 分!
痛失 60 分!
最大的遗憾就是 T4 痛失 60 分!
正在写这篇记录…
今年的表现一言难尽啊,考场上最多就是 T2 的失误比较多,但实际上,还是觉得在备考上有欠缺,没能复习到位,导致丢分比较严重。还有有关考试做题策略的问题,今年跳题好像跳得太频繁了,感觉不是很好,思路比较零散。
突然想起来一件事,不是成绩出了,也不是什么重要的事情,只是突然想起来当时考试的时候,Dev-C++ 一用调试就闪退,整得我 T1 调得好痛苦,算是一个小插曲吧,以后要锻炼一下静态差错的能力和减少对调试的依赖,争取代码一遍写好。
怎么说呢,有时候感觉自己很菜,但是回头看看自己也已经学了不少东西,尽管考试总是有失误,但是考试结果是真正重要的吗?我觉得不是,我觉得重要的是,尽管面临失败,但是仍然不失去兴趣与喜爱才是最重要的。
就像央视的足球解说员贺炜所说:
人生当中成功只是一时的,失败却是主旋律,但是如何面对失败却把人分成了不同的样子。有的人会被失败击垮,有的人会不断爬起来继续向前。我想真正的成熟应该并不是追求完美,而是直面自己的缺憾。——贺炜
有时结果并不那么重要了,享受过程才是最重要的,虽然拿奖是一件挺开心的事情,但是不拿奖就一定要伤心吗?在考场上,平时训练做出题也很有成就感啊,思维上突破也给我带来很多愉悦。
这个世界上只有一种真正的英雄主义,那就是认清生活的真相并且仍然热爱它。——罗曼·罗兰
未来,如果还有机会肯定珍惜这段最后的时光,如果没有机会了,那就在这与 OI 分别吧,人一旦决定要做一件事,最好的结果是坚持下去,直至结束。正如我在停课前所说的那样:
I c a n a c c e p t f a i l u r e , b u t I w i l l n o t s u r r e n d e r \rm{I\;can\;accept\;failure,but\;I\;will\;not\;surrender} Icanacceptfailure,butIwillnotsurrender
生日
CSP-S 的成绩竟然出了,结果卡 NOI 的官网卡了 40 多分钟没卡进去,最后终于看到成绩。
没想到 T1 还是被 CCF 卡掉了一个点,结果还是听天由命,如果一等线放开一点就没有问题,这个分在 GD 排名 250 左右,确实有点危啊…
祈祷压线一等。
5 日晚模拟测结束后,看到 Luogu 上 chen_zhe 发了个钩子初步估分的置顶帖,点进去看了看才知道原来分数线出了。
到 NOI 官网,获奖名单下载不了,服务器炸了,但是看到 GD 的一等分数线 125 ,于是松了一口气。这最终还是让我压线过了呀!
Luogu 7 级蓝钩分数线 140 ,可惜了,都怪 CCF 卡了我一个点 ,可能 6 级就是我的结局了,接下来的 NOIP 一定更加艰难,最后两周,为最后一战而奋斗吧!
感谢 LGJ 和信息组其他老师的奉献与关怀,感谢均神的帮助,感谢杨队、李队、涂队等,还有高一大佬们的模拟赛讲解,感谢支持我停课的班主任。