JSOI2021 游记
Day 0 - 2021.4.9
写一波最近的事情吧(
3 月 20 号出头 cnblogs 抽风,说 25 号恢复来着,我就囤了一堆博客在本地准备 25 号发,结果到时候就懒得动了。干脆越屯越多,省选结束之后再全部发上去吧。
两周前开始停课。
NOIP 结束开始学新算法,一开始效率挺高,越接近省选越发现时间不允许我把所有省选知识点全部学完。于是压力就越来越大,学习效率就越来越低。最后一周的时候干脆放弃了,到现在多项式、计几、线代、点分治之类都不会。只能赌省选少考一点我没学过的吧,数论这玩意我擅长倒希望考道难的。
打了几次 hb 的模拟,大概 20 个人在 rk10 左右的样子吧,还有一次做出了全场都不会的题,到腾讯会议里给他们线上分享了(是数论题)。信心倒是增强了一点。
最后几天心理压力异常的大,虽然别人看我可能是笑嘻嘻的。于是免不了的就是颓废。本来计划最后三天复习理论知识、打板子,但是前两天都忍不住颓废掉了,今天早上去学校拿了个准考证,就剩下午晚上草草复习一下打个板子。去年动员大会 yjz 让我们写四维偏序、FFT、SA、网络流,我一个都不会。现在除了 FFT 都会了,写了一波。
(话说今年动员大会竟然没喊我去,气抖冷)
然后看了一波注意事项和 sb-mistakes,十点半睡觉。我相信我的水平努力一下还是能进队的。要坚信这样一个统计学定论:大考必然会有更多的人翻车。那我只要稳住让自己不要翻车基本上就能进前 17 了,毕竟我的 NOIP 优势在那儿呢。考的时候心态自信一点,题不要想一半放弃,尤其是没有不会的算法的题。不能冒险,要对拍或者其他方法让自己相信不会挂,这样对剩下来的时间的心态也有帮助。也不要幻想其它奇奇怪怪的事情,投入到考试里面去。
没跟很多人交换 rp++,因为去年 CSP 这样干了差点没掉,NOIP 没有就好的很。祝自己 rp++ 罢。
Day 1 - 2021.4.10
早上到观音和弥勒面前祈祷我获得前 rk15(???)
带了好多巧克力,一杯茶(提神?),身份证和笔去 nfls 本部考试,是我主场啊。我妈还叮嘱我考试期间把巧克力全吃掉,因为下午要考体育,我吃 tm 个碘锤啊?
到四楼大厅发现没几个人,其中一个是 wjz,还在卷 whk,卷王/se。太无聊就绕着整个学校转了好多圈,出了一身汗,回来又等了一会儿好多人来了。ymx 奶计几,那咋行啊,我肯定奶数论!
8:20 进机房,座位之间用纸板隔着的。调编译器的时候还把缺省源写到编译命令里去了,我说怎么按回车不换行反而是确定了呢,浪费了好几分钟。只有 10+min 的时间,完全没时间写之前计划好的 SA 板子,就发题目了。。。
打开发现全开 O2,hopping;不过不开 c++11,差评。瞄了一眼 T1 哎哟这不弱智题吗,一眼二分。瞄了一眼 T2,看上去像是个高斯消元??吓坏了,我还没学啊,不过依然可能现场 yy 出来,而且这考板子也挺凉心的呀/ww。T3 使用瞄的方法是无法看懂的,干脆先把 T1 写掉。
写的时候假了好几次,不过终究是水题,大概 30min 还是 1h 的时候过了大样例(记不清了,考了一天试累死了)?当时还担心被卡常,对值域二分答案里面还循环了好几次,但是 5e5 的大样例只跑了 0.29s,1e6 还用仇?干脆没拍了。
然后仔细看了一下 T2,发现 \((n-1)(m-1)\) 个方程 \(nm\) 个变量消元个锤子啊。还有必须在 \(\left[0,10^6\right]\) 内的限制,看上去像个构造或者差分约束。然后想到,如果把最后一行、最后一列 \(n+m-1\) 个数固定了,那么直接就推出来了。不妨把每个格子表示成这些数的线性组合然后列一堆不等式。打个表发现中间格子系数不为零的元素恰好是该行最后一个、该列最后一个、角落这三个,系数都是 \(\pm1\),有一定规律。那么把角落暂时当作常量(就像偏导一样),建出差分约束然后 floyd,不允许有负环就相当于一些关于角落的不等式,解一下就可以了,那么就做出来了?你别看这里写的云淡风轻,其实考场上花费了 0.5~1h 想。而且还要利用二分图的性质,翻转一批变量的符号,使得不等式全是 \(x_i-x_j\leq c\) 的形式,看上去就很烦。然后测了一下 \(10\) 遍的 \(2n=600\) 的三次方的纯 floyd,发现要 1.5s,那岂不是没了?卡了一堆常变成 1.2s,突然发现要 ll 变回 1.5s,心态炸了,在这上面倒腾了好长时间。
接下来又发现了一堆漏洞,比如你一条链边权和的角落的系数取值可能很多?那不就四方了吗?总之这种方法现在分析下来能过的概率是很小的。不过看上去前 50pts 都很水(flag),后面还有 25pts 似乎可以 wll?那就跳过先看下一题。
T3 16pts 的暴力(我一开始还以为 20 个点每个 5pts,以为 20pts,后来发现是 25 个点每个 4pts)还是很显然的,遂打完。心想,这 T2 都这么复杂了,T3 看上去也不太可做,大概是啥关于 scc 的神仙科技(支配树?),还是去搞 T2 好一点。目前还剩 3h,都用来搞一题也太爽了吧!开始以为自己能 220pts(一开始以为暴力 20pts……)而美滋滋(???)
不过这 T2 着实也不知道怎么搞。前一段时间一直在对 floyd 卡常,无果。然后思考这个漏洞要咋搞,也不会……不过分析一下似乎可以归约到系数为 \(\pm1,0\) 的情况?也不确定。不知不觉过了 1.5h 左右(话说想的时候脑子里一直在循环「后撤步 7777,我要 时刻 保持 自信」?考前听了毕导的话没怎么听歌,搁这现在给我循环白鼠的鬼畜???),这时候需要在写正解试试看和打 75pts 部分分之间选一个,犹豫了好久。然后一段时间的状态是写一会儿正解感觉太烦了,就删掉写部分分,然后想想又感觉正解能一下把部分分过掉,不用数据分治,而且说不定后面数据有梯度能多过几个呢?那岂不是爽哉?然后写一会儿又嫌烦……然后顺便到 T3 再搞了搞,发现可以类似分崩离析贡献 \(\mathrm O\!\left(nm^2\right)\),虽然理论 4e8 不过我知道很跑不满,大样例也跑的很优秀。再往下估计就真要维护 scc 了,可能真的卡科技。
大概还剩 1h 的时候决定下来写 T2 部分分。然后发现自己不会 \(n,m\leq 3\) 的情况(可以暴力差分约束,或者手玩,不过都好烦)……后面 25pts 搞成最小割又发现做不了,有不允许相同集合这样的限制呀……\(m=2\) 也不太会搞,感觉是个简单版本的差分约束,不过又要分析好多,真的好烦。于是心态炸掉了,到现在才 144pts 呀!本来以为 200+,然后发现三档部分分全都不会?我至少也要 150 以上吧。放弃了后 25pts(不然呢?),在犹豫搞 \(n,m\leq 3\) 的 20pts 还是 \(m=2\) 的 30pts,决定前者。不过分类还是差分约束都放弃了,太烦了……然后想后者,诶!发现一个比较简单的做法,把每行并成一个 \(\left[0,2\times 10^6\right]\) 元素从后往前推解不等式的方法,非常方便,冲了一波还剩 10min 交卷。稍微检查了一波(主要是刚写完的这 30pts),三个都没拍,慌得一批。(不过另外两个大样例也挺强的,这个 30pts 也好写?)
这次居然要打压缩包交到类似学生端的东西上……等了半天,跟 wjy 交换了一下分数,他 230pts,把 T3 做出来了!稍微跟我讲了一下,好像是维护两点之间最小编号的边,似乎并不难,要是我没有望而生怯不就做出来了?同机房的 wjz 160+,dy 跟我同分,tzc 194,tzc 还说被我 dd 了?假的扣脚。出来之后遇到 ymx,也是 194,orz 都 ddw 了。然后立刻坐我爸电瓶车到十三中去参加体育中考,两点就开始了……中途吃了点鸡块,还带了个汉堡进去。
到里面跟同学搞基还是挺快乐的,不过冒着汉堡被抢的风险。光等就等了 2h,百无聊赖。突然想起来我 NOIP 分数优势很大?ddtzc 是肯定没问题,去找到了 tzc 问了一下 ymx 多少,是 260,那把 NOIP 按照 2/3 折算我目前恰好和他打平了?wjy NOIP 160+,那我目前也 ddt 了?还遇到了 yxh,她 100-……………………
跑 50m 的时候衣服丢田径场了……而且疑似放水,50m 和实心球竟然都只扣 0.5?那跳绳满分稳了,不就 39 了?结果跳绳的时候鞋带散了,花了 10s 系鞋带,最后成功 380+ 没满分。不过当时觉得这最多扣 0.5 吧,最终五入还是 39。然后 jpc 竟然说扣 1 分???可是这时候申请重测已经迟了…………最后 38 分悲惨离场。回去找衣服又不见了,真 tm 糟心……随便拿了一个别人的回去(不 讲 武 德)。
晚上在外面随便吃了个饭,回家补了这个游记。kkk 似乎说暂时不造数据?代码都公示了,坏人啊!然后还跟我妈讨论了一下策略问题,写在下面。
这个 Day1 显然考的不是很理想,连 wjz 这种没怎么在 OI 上下功夫的都只比我少 10pts。(虽然大部分人能被我 NOIP 追回来,可是明天呢?)
这次 T3 没做出来真是亏大了。一个问题是,我思考题目一般是这样一个过程:把原始条件形式化,然后分析成更好处理的,一直分析,直到可以用已知模型解决为止。而这次我分析到要维护 scc 以为是不会的科技,而且按照经验难度应该顺序排列,所以就直接放弃了。事实上不一定顺序排列是显然的,而对于没学过的东西,我怎么可能判断一个模型是否用它?说到底还是自以为是,把往下想的路堵住了。如果没有抱着「T3 不可做的心态」,那说不定能分析到最后做出来。
其次就是时间分配问题,例如今天是应该想 T2 还是想 T3。明天可能有几种情况:
- 一题都不会。这种情况可能 csy 都只能做 2 题,我的目标就是做出来任意一题,然后其它写部分分。有三题可以选,这一点似乎并不是很难?
- 一个签到题,两个不会。如果部分分加起来超过 100 那就很舒服了,如果部分分不满意呢?那就是今天这种屌丝情况,我相信不受自己奇怪的思想的干扰,应该还是能做出一题的,尤其是算法学过的题,不然这比赛就没有区分度。
- 两个以上的题会做,比如去年前年的几次中中中的 Day2,那就很舒服了。
找了去年的一些数据安慰了一下自己。至少明天不会在理论分数还没写的时候就开始飘了,分数再多也不嫌多罢……明天争取逆风翻盘,rp++!(九点半就睡了)
Day 2 - 2021.4.11
昨天晚上 tzc 告诉我他 T1 假了,今天没有心情来了。结果早上见到他的时候他笑嘻嘻的跟我说没假。。。。
Day1 没考到啥高级算法,Day2 总该考了吧,不然我这几个月学省选知识点岂不是白学了。奶了一口 wll + 字符串 + 数论,ymx 说肯定会有 DP?
还是提前了几分钟发题目,看到还是全 O2 hopping c++98 chapping(自己发明英文单词?这叫呆子语)。想着今天要翻盘,倒是利用这提前的几分钟把前两题已经看掉了。这 T1 不是个常规数(树)据结构吗?那大概率切了。T2 看不太懂,而且感觉题目有问题(???)。T3 感觉挺鬼畜的样子,有向图?支配??难不成真成了昨天以为的支配树???
想了一会儿 T1 会了个 2log 的比较烦的做法。因为觉得比较烦,所以还在犹豫到底是对后面两题进一步分析还是直接开写 T1。然后 T1 又理论优化了一波,做法变得简洁一点了,并且意会了一下感觉不会有 1log 做法。反正我这是倍增乘以主席树(终于用到这几个月学到的东西了)单点查询常数小(就 while 往下跑就可以了)。然后很快就写完了,大概 1h 的时候过了大样例,跑了 1.002s 不慌(TL = 2s),数据范围是大样例的两倍,再算上 log 乘以相应倍率一通计算猛如虎毛估估出来极限数据大概 1.5s,我已经忘了怎么估的了。而且这个大样例也很强的样子,就丢了转第二题,爽啊!
翻到数据范围才发现 T2 \(n\) 只有 13?赶紧看看 T3 数据范围有没有什么不对劲,还真有,\(n,m\) 只有 1e3,\(q\) 只有 2e4???我一开始还以为只能是个线对 / 线根的做法。。。那么这 T2 肯定就是状压啦,不是 \(\mathrm O(3^n)\) 就是 \(\mathrm O(2^nm)\),我更倾向于后者。
不得不说这个 T2 还是不太显然的,想当年去年省选的那个状压 DP 我一眼就秒掉了(尽管还是在不卡时空的前提下)。分析了好一会儿,才想到 \(b\) 的顺序与最终排名形成双射,并且对于每种顺序可以贪心判合法性。那对于这个贪心的条件,拆个贡献,拆成 \(\sum f(i-1,i)\leq ?\),这样不就可以记录上一个进行状压 DP 了吗?好耶!不过当时并没有太多情绪上的波动,因为昨天说了,Day1 发挥失常,今天分数再多也不算多。冷静了一下写了个全排列检验了这个贡献序列的正确性(想到了把第二关键字化为进制的技巧,感觉很牛逼?),然后列出来一个 \(\mathrm O\!\left(2^nn^2m\right)\) 的状压 DP 做法,还要开 ll,开了一个 400+MB 的数组,好险。这个很好写,写完的时候已经 2h41min(别问为啥记这么清楚)过去了,好家伙,还剩 2h 给我搞 T3 是吧,这也太爽了吧!
这个 T3 30pts 暴力我会。但是暂时不想打,因为莫名感觉能有更多的分??这个 \(m=n-1\) 一开始只意识到是个 DAG,可以 DP 路径数但是没法快速修改,好像也不太行的样子?想了良久发现一个支配的传递性,当时并没有立刻意识到这可以建树。又过了一会儿我对着样例看了一下,这三次的支配集不都构成树吗?又想起之前发现的「传递性」,莫非这就是传说中的支配树???我继 NOIOL2020R1 yy 出启发式合并以来再一次在考场上 yy 出算法了?莫飘莫飘,我还没想出来呢。
然后猜想了一下加边是怎么样的,似乎很简单,就往 lca 上接一下即可。那么现在离 100pts 就差个初始化的建树了。这怎么办呢……咦?建树也可以直接一条边一条边的加?那我阿克了??虽然这个数据范围感觉偏小了并不对劲,但我阿克了也太爽了吧??终于体会到了 xht 在 HBOI2020 Day2 时候的心情了,之前虽说分数再多也不嫌多,但阿克也太爽了吧咦哈哈哈哈哈???遂写了这个简单的程序,测样例!样例 1,AC!样例 2,WA……瞬间把我的情绪给冲淡了。
这时候大概还剩 50min 左右。调了一会儿调不出来,因为样例 2 太大了……于是我不禁开始怀疑起来之前的几个猜想是不是错的,可能没那么简单。但是不难发现这个假的支配树算法是能过 \(m=n-1\) 的,因为这其实就是棵外向树啊。一直调了 40min 还没调出来,这时候我是 215pts。这虽然不错了,但是我完全可以再写个四方的 30pts 暴力,虽然理论复杂度是 4e8,但是常数特别小,大概率能过。10min 的时间,和简单的代码,究竟谁能战胜呢?最终在还剩 3min 的时候码完了,一发过了大样例 2,爽,245pts。剩下的时间就移了一下文件,然后在三个程序之间来回点击。就在最后一刻,等等!我 T2 统计答案的时候是不是没开 ll!赶紧改,改的时间段跨过了结束时刻,还要重新打包,反正之后可以再次操作电脑。忘了说了,之前考试途中还发现 T1 \(c,m\) 写反了,但是大样例 \(c=m\),我这就很方啊,不知道还有没有其他挂分点。还有今天早上似乎听到人说昨天 T1 大样例弱,那么现在三个 A 掉的题都被我担心了呀,我凝固了呀。
好家伙我直接好家伙,真就六题只有一个主席树是我最近的学习成果,唯一考的一个高级算法——支配树还是我没学过的呗。这场考试期间我奇迹般地把巧克力吃完了,喝了两杯水(去打了一次水),去上了六次厕所,估计监考人员都以为我有病。
交换了一波分数感觉还可以。隐隐约约听到 dxm 和 ztr 的对话「这卷子拿到 ZJ 真的能选出省队吗」感觉他们阿克了(upd 4.12:贴贴群里测了,果真都阿克了),而 245pts~300pts 中间好像没啥档了啊?果不其然,tzc 100 + 60 + 75,ymx 跟我同分,wjz 200+,其他的就有点惨了。那我 Day2 应该算是翻盘了吧(哈哈哈哈)。
orz tzc 只看省选还 ddw 了,但是他 NOIP 比较逊(
(回到家后)
昨天我要体育中考,今天没事了,自然就是在家做各种对分数分布的预测和水群之类。到家水了一下午的 LA 和 u 群,找到了 D1T1 和 D2T1 的冥间数据,测了一下都过了,好了,两个担心的都可以放下了。
晚上还要上该死的 xes 语文课。就在上语文课的时候,某个洛谷帖子(别问我上课为啥在水帖)里给出了六题的冥间数据 link,我全身发抖地交了上去…………………………——Day1T3 挂了 28pts(数组开小了)!那我估计要被 ymx dd 了。不过也并没有挂太多吼?
我告诉 hb 之后 hb 说他觉得进 E 的问题不大,我美滋滋了一会儿。后来才发现事情不对劲。以下是我和我妈在下午晚上对分数分布的一些分析:
- 首先之前把 NOIP 按 2/3 是错的。之前以为最终分数是 \(40a_1+30a_2+30a_3\),没想到其实是 \(40\dfrac{a_1}{s_1}+30\dfrac{a_2}{s_2}+30\dfrac{a_3}{s_3}\)。而 \(s_1\neq s_2\),是 3/2,中和一下发现 NOIP 和省选是 1:1(假设标准分 djq 全 AK 的话)。进一步,分数其实就是 \(\dfrac1{10}\sum a_i\)。。。。。
- 实际上 djq 并没有阿克。那么对于我的优势场,我应该希望 djq 越低越好,反之越高越好。然而真实情况却是对我来说最不乐观的:我通过马蜂找到了 djq 的程序,NOIP 385,Day1 285,Day2 300。看到没有,Day1 没阿克,Day2 反而阿克了。。。。。
- 了解了一些初中同学(有些是 tzc 帮我测的,u1s1 tzc 似乎真心希望我进 E,因为那样我就不会跟他抢 D(???))后,csy 肯定 ddw,ymx 比我高 1.7pts(就看我那 28pts 能不能因为最终数据水而多拿一点?我觉得希望渺茫),其他 sjc wjz lxr 啥的都没我高。
- 查一下 NOIP 表。NOIP 220 以下的,想要超过我需要省选 460+pts 以上,那不是不可能,只不过我觉得对于 NOIP 220 以下的人可以看作不可能,不需要考虑跟我比。那么算上我自己、ymx、csy、220 以上的非高三选手,一共 22 个人,我想要进入 rk17 必须 dd 至少 5 个人。后来 tzc 又测了 jgh,似乎险些比我高,差距在 \([0,0.1]\) 间,还剩 21 个。而我看这些人中倒数五个人(除去高三 sy),NOIP 250-,名字也都没听过,我觉得都被我 dd 也不为过分,所以我还是有希望的。同时我也是比较悬的。说不定最终真就应了菩萨的话,rk15 呢?(滑稽)
- 换一个角度考虑,不跟今年的其他人比,直接把我 69.2 的标准分放到 2020 2019(2019- 找不到)的省选名单里,会发现 2020 我是 rk22,2019 是 rk16。而去年显然是 JS 的巅峰状态,所以今年的省选情况和 2019 应该差不多,所以也是感觉能勉强进个队。
草(发出小草的声音),补游记补到深夜可还行。总之希望我好运,能进入前 rk17 罢。(话说我为啥游记越写越长了???可能我写游记的长度情况为:失落 < 开心 < 压力山大)
Day 3 - 2021.4.12
文化课自闭闭?
又获得了一些数据使得我对进前 rk17 的概率的估计增大了。
放学后 rzr 还到 KFC 请了我一包薯条,然而此时我还不能确定我能进队(
Day 4 - 2021.4.13
今天出了个榜,但是是民间数据的(似乎就是我之前测的那一套)。里面我是 rk12,ymx rk11,csy rk5,sjc rk17(%%% 初二 E 类),tzc rk19(有点可惜,不过 D 稳了),lxr 倒是挂的挺惨。这么看来我似乎挺稳的了,民间数据到官方数据出入应该不大,况且我不是那种玄学选手。
Day 5 - 2021.4.14
ccf 老 pigeon 了,本来说今天上午十点出分数,结果一天都没出……
话说 ccf 哪次没鸽的?之前说 4 月 5 号之前举办省选,也鸽到 10 号了(虽说这对我是好事??),我真的是服了。
Day 6 - 2021.4.15
(把博客们上传了一波)
今天总算出(具体分数和总分排名)了……我不仅 Day1T3 挂到彻底,Day2T1 也 -5pts,可能是卡常了,不过无伤大雅。其他人大概多多少少挂了一些分,只有少数加分的。csy 直接掉到 rk6,我、ymx、sjc、tzc 反而升了一名。这下 tzc rk18,也够惨的,不过他大概本来目标就是 D 类,大概很满意了吧()。wjz 反而掉了 4 名,掉到 rk32 了。其他人的情况就不说了,毕竟有退役的。数了一下不算 NOIP 的话我大概是 rk19,进不了队了/kk,Day1 还是发挥的太烂了呀。
考前觉得,考完之后不管是进没进队,都会在游记结尾有一大堆感慨要说。然而事到如今,的确达到甚至超过了自己的目标(目标是 E 类,跟菩萨讲的是 rk15),却没有太多牢骚可发了,大概就跟那些高考完的考生一样罢。
不得不说,这次省选是我学 OI 以来最在意的一次考试,大概也是出生以来继小升初的 nfls 面测第二在意的考试。从去年省选结束之后 hb 告诉我一年后的目标是进 E,到 NOI 打铁后更想进 E,然后 CSP NOIP 的成绩又说明我确实有希望进 E。现在一切都尘埃落定,也算这三个月的努力没有白费罢。所以接下来两个月要滚去搞 whk 了是吗,不过也大概率被全年级一半的人 dd(