• ZJOI2022 游记


    前言

    说起来也算是好久没写过游记了吧。
    这毕竟是我的最后一次省选了,而且面临着可能退役的风险,还是决定至少要留下些什么。

    当初 NOIP 时耗费不少精力做出了 T4,结果却在 T3 翻了大车,又重复了 NOIP2020 的经历(做出 T4,T3 爆炸)。如今也不想做什么解释,只能说没做出来就是没做出来,还是太菜。
    最近也发现我做题可能还是要看相性,以及能否忽然灵机一动(简单来说就是看 RP?),不过或许也和做题的心态有一定关联。
    所以最终还是要凭借运气这种虚无缥缈的东西么?
    人们常说运气也是实力的一种,那么从另一个角度来看是否也可以理解成在丧失运气的同时也丧失了实力呢?

    而且,今年偏偏变回了 ZJOI,虽说挺有情怀,但同时这也无疑是我心中的阴影。更重要的是不清楚它仅仅是披着 ZJOI 的皮囊,还是真的还原了 ZJOI 那离谱的难度。
    是否知道一道题的难度对我来说影响还是挺大的,有些时候想复杂觉得极其困难的题目一看难度会立刻认识到我想太多了,另一些时候觉得随便秒掉的题目一看难度会忽然发现我的做法中隐藏的极大的问题。
    呐,反正现在说再多也没用吧。

    如今的我也不太想去做那种赛前立 flag (无论是正向还是反向)的行为,以前没啥感觉,现在作为老年选手切实感受到退役的残酷之后,还是挺忧郁的。
    想立个正向 flag 又没有足够的实力与把握,要是立个反向 flag 又觉得万一真一语成谶了反而更显悲哀。
    此外,从旁观者角度(也就是我在看别人的联合省选游记时),感觉那种赛前刷“自己很弱”“一定会退役”、赛后刷“自己非常走运”“别人都没发挥好”的行为,其实是非常打击人的,反正我挺反感。
    所以,我并不想夸大自己的实力,也不想过分否定自己,毕竟在这种时刻还是需要几分自信的,我也不是完全没有进省队的可能性。

    都说到这个地步了,似乎得扔出几句华丽帅气的话来?
    但以我的软弱,也只能憋出一番最为俗套的话来,例如希望能够考出个理想成绩之类的。
    最终思来想去下定决心:不管怎么说,还是希望能以洒脱的姿态迎来这次省选的呢。
    所以,即便是自我欺骗也好,这一刻的我啊,请将一切烦恼都抛开吧。

    Day0

    按通知 13:00 前赶到机房,结果到了才得知 13:30 出发,而且老叶自己都 13:20 左右才来。
    orz 一波 LYP,早就料到了这一切,故意晚了一些才来。

    下楼看到车牌号 28382,不知道为什么对这串数字有一种熟悉感,然后仔细一想这居然是我的洛谷 uid?!

    车上闲得慌,又有点抑郁,开始扯游记前言,尽管后来差不多是完全重构了一遍。

    到了宾馆开始分房间,因为有 7 个人,所以我单独一个房间,感觉一个人可能也确实自由一些,只是有点担心明天早上会不会睡过头......

    然后就是去试机,敲了个读优结果发现居然写挂了一个说小不小,说大又不大的细节?这大概就是长期复制模板的坏处吧。
    另外被科普了默认的编辑器是一个红色的编辑器(尽管文件图标完全一致,而且界面也几乎一致,但图标不一样),似乎调试起来非常麻烦,不能显示过大的数组,需要切换成蓝色的 Dev。

    晚饭是统一点的外卖,7 个人,4 个房间,12 个菜,我们大眼瞪小眼不知如何是好。
    因为是在我的房间分的,所以最后由我写了个 random_shuffle 随机给每个房间分了三个菜......
    所以我得到了两人份的菜,似乎血赚?

    吃完饭发现一个网站居然刚好新更了《黄金拼图》剧场版(去年的《黄金拼图 Thank you!!》),不禁有些毛骨悚然。
    不过现在的 ZJOI 应该也不会有九条可怜吧?经典毒奶人。

    Day1

    可能是因为有些紧张,闹钟还没响就醒来好几次,大概分别是在 3:00,5:00,5:30,6:30 左右。
    隐约记得几次醒来之间做的梦好像是连续的,甚至印象里在 5:30 那次醒来的时候还吐槽了一句“这剧情发展越来越离谱了”,然而起床后就把梦的内容忘得一干二净。

    吃完饭便打车前往义乌中学。
    到了之后听 275307894a 说 CQY 奶了要考多项式和仙人掌。
    我很肯定地说不会考多项式,就算要考也只会考 FFT 板子用来做卷积,而不会考多项式 Exp、牛顿迭代、拉格朗日反演之类的奇怪东西,因为 NOI 大纲里面 FFT 和卷积就已经 10 级了。
    【然而现在一想这个理由似乎并不成立,因为这是 ZJOI,和 NOI 大纲并没有任何关系】
    不过说到仙人掌我倒是有点慌,毕竟我似乎挺久没写过图论题了。但最后还是觉得应该不会考,就算考了说不定也能考场上自己推一推。

    解压密码大意是 ZJOI 旗开得胜,然而看手写的密码完全区分不了 0O 以及 1I,后来有了打字版的也没看仔细,结果试了 5,6 分钟才解压出来,于是开场心态就有一点小崩了......
    打开题面第一眼就看到九条可怜,心底直呼不妙。再仔细一看题目背景,大意是九条可怜离开了,所以出题的似乎并不是九条可怜本人,而只是单纯玩传统艺能?
    总之,在最后这次省选终究还是没逃过九条可怜,也不知是好是坏。

    先把题意都看了一遍,最后决定按照联合省选的传统开题方式,先做 T1,认为再怎么说也应该会有一道签到题。
    比较容易地想到了一个状态 \(O(n^4)\)、对每个状态 \(O(n)\) 转移的 \(O(n^5)\) 的暴力 DP,简单调调就过了样例。因为跑不满,实测能跑 \(n=100\) 的点,喜提 \(60\) 分,似乎开局很顺利。
    然而接下来想优化就有点卡住了。主要问题是思维好像不太能集中,平时做题习惯比较懒散,正式考场上一紧张就容易大脑一片空白。
    好不容易憋出一个转化,可以修改一下状态的设立方式做到 \(O(1)\) 转移,兴奋地敲完之后发现比答案小。仔细一想发现这样不一定能满足限制,可能会比答案大,虽然并不明白为什么实际上比答案更小,但赶紧扔到一边不再管了。一看时间已经过了 1 个小时?!
    又过了一段时间,总算想出一个容斥,可以消掉状态中的一维,做到 \(O(n^4)\) 的复杂度,但分数并没增加。
    接着大脑又开始空白了,决定先换道题,改善一下心态。
    先码了 T2 的 20 分白给暴力,然后对这种众数问题感觉会有什么根号算法。
    但一看 \(n\le5\times10^4\) 这档只有 \(2\) 个点,剩余的档 \(n\le2\times10^5\) 而且 \(\sum n\le5\times10^5\)。当时以为根号只给了 \(10\) 分,心想那我还不如把 \(a_i\) 只有 \(5\) 种值的部分分写了,这样就有 \(40\) 分了。
    回头看 T1,突然发现之前被我扔掉的那个转化其实也可以用容斥来保证满足限制,所以赶紧把被我扔掉的那玩意儿又打了一遍,发现跑出来还是比答案小,而且注释掉新增的这个容斥部分跑出来的答案和之前是一样的。
    并不知道哪里出了问题,加上心态有点小崩,调试起来又有些麻烦,于是对着 DP 的那短短几行代码大眼瞪了半个小时......
    最后发现居然是初值赋错了,急忙改了一下,总算过了小样例。
    顺手测了下大样例,很满意地看到前几行都是对的,然后直接翻到最后一行,当然是...不一样?!
    一行一行看过去,一脸懵逼地发现居然在第 \(18\) 行挂了。猜测大概是因为膜法炸了,但试了下又没问题。
    于是又开始大眼瞪,可惜这次瞪不出来,最后直接变成了发呆......
    看看只剩两小时了,彻底慌了起来,赶紧去打 T3 暴力。
    这个图的性质给得莫名其妙,一开始猜测可能是仙人掌,然后随手就能举出反例。想想如果是其他的性质我大概也不会,所以直接开打部分分了。
    发现有 \(40\) 分的点都满足一个点只可能出现在一个环上,这只要把环缩成点,建一个类似圆方树的东西就好了。
    似乎有某位同学考前奶了有仙人掌啊,现在有点后悔当时没瞥几眼。
    不过好像也不是很难编,很快就过了小样例(尽管小样例很水)。而大样例死循环了,估计是因为不满足条件。
    然后写造数据程序对拍,想了个办法让图中有大量的环,结果造数据程序写错好几次,加上修正代码中一些奇怪的 bug,恍恍惚惚间又一个小时过去了,才成功拍上。
    最后不到半个小时,感觉也干不了其他事了,就回头继续对着 T1 愣神。
    发现开始的那份代码和后来的那份代码挂的行数不一样,感觉事有蹊跷。
    再仔细想想,终于在只剩 4 分钟的时候发现一个极其智障的错误:我写了一个如果状态为 \(0\) 就不转移的剪枝,而我写代码的时候因为思绪有些混乱,在一个状态的转移过程中也同时处理了另一个状态的一步转移!
    赶忙改掉,终于卡着时限过了 T1,至少没有挂得太惨。

    出了考场,就得知 275307894a 把 T2 切了,而且还说这和一道我和他一起做过的题目很像,复杂度是 \(O(n\sqrt n)\)
    我仔细一想好像确实是这么回事,而且仔细一想这数据范围根号确实能过,直呼血亏。
    然后吃饭的时候突然想到一个非常严重的事情,我建的圆方树在处理单点间连边的时候似乎有问题,因为我连边时要判断两个点是否处于同一个环,而单点所在环编号被我记成了 \(0\)(这就是图快写轻量版圆方树的悲剧下场)!而我造数据的时候构造了大量环,确实很难出现两个单点相邻的情况,所以才能拍起来!
    再仔细一想正常情况下即便大样例不满足条件,也不会出现死循环,死循环就是因为没连边导致树上倍增挂了。
    一瞬寄了 \(40\) 分,顿时感觉眼前发黑。不过还是自我安慰了一波,虽然树的情况肯定没了,但如果出题人很善良,说不定还能够水到几分。
    所以乐观估分 \(140\sim 160\)

    据说有一堆 \(200+\) 的人,大多暴切 T1,T2 或是 T1,T3。
    还听 275307894a 说 hehezhou 一个半小时切完了 T1,T2,然后 T3 打了 12k 代码。不过他 AK 也是意料之中的吧,而且有人 AK 也可以让标准分相差小一点。

    后来听说队线大概是 \(160\) 分,如果 T3 真能水到一点分,再凭借 NOIP 的几分优势,或许还有点希望?
    但说实话 NOIP 真的拉不开多少分数,毕竟除了两个 AK 的大佬以外,其余人分数都差不多集中在 \(300\sim 344\) 的范围内,而且其中很大一部分人是 \(320\) 分以上的。

    但正如一开始说的,还是希望保持乐观的心态,直至省选结束。
    所以,寄希望于明天。

    插播一条好消息(坏消息?):今天抽卡超大成功(虽说并非我想要的),可惜不知道会不会把 RP 耗光。

    Day2

    早上又是在闹钟响之前醒了好几次。最后做的梦是一个梦中梦,在梦里起床烧水时(我也不知道为什么我起床后会烧水)闹钟响了。

    突然得到通知从义乌回去不用隔离了,所以原本在这里多留几天的计划就取消掉了,临时收拾好东西从酒店出发。

    今天的解压密码大意是 CCF NOI 未来可期。
    只是不知道为什么最后一个字符是个 ?
    有了昨天的经验,现在我已经能够很好地区分手写的 0O 了,因此一遍就解压成功,心情++。
    看题目背景九条可怜被隔离了,不知道为什么很想笑。

    看 T1 似乎长得很像送分题的样子,找了半个小时规律没什么好的发现。
    想想昨天硬刚一题吃了大亏,所以写了个 \(10\) 分暴力就跑路了。
    然后看 T2,好像也很有性质,但还是不会。
    状压好像有很多分?本来以为能水到 \(40\) 分,然而 \(b,c\le 5\times10^3\) 的点由于有 \(10\) 组数据似乎过不了,卡卡常把 \(10\)\(a=3\)\(b,c=10^3\) 搞到 \(0.7s\),想想为了 \(10\) 分再搞下去不太划算,于是又跑路了。
    T3 看起来也很可做(你怎么看啥都可做,结果又啥都不会做啊),而且一下就冒出大量思路,打算先写个 \(O(n^2)\) 的暴力看看,如果优化不来再去写特殊性质。
    结果不知道为什么暴力调不出来?小样例太水怎样都能过,大样例又调不了,最终还是只能依靠传统的大眼调试法,却毫无成果。
    不知不觉就只剩一个半小时了,此时的我分数为 \(10+30+0\),想想也不太可能突然爆发做出一道题来,顶多混到个八九十分。
    这个时候,我心里直接大喊,除非考出来所有人都只有 \(100\) 分左右,否则我大概是没戏了。
    此时心态真差不多要崩溃了(你可以设想一下,原本打算翻盘,结果却只能考出两位数,该会是什么样的心情),但最后想想从最开始就一直自我暗示着要保持乐观,而且如果这真是我最后一场比赛,至少还是应该认真把它打完。所以硬着头皮,假装大家真的都只有 \(100\) 分,继续对峙下去。
    觉得 T3 即使真把暴力敲了出来也只有 \(20\) 分,而且感觉 T1 看起来真的很像送分题,总觉得说不定可以用一个非常简单的结论搞掉,所以回头搞 T1 了。
    结果没想到还真被我发现一个比较诡异的性质,复杂度涉及到一个东西的循环节长度,猜测是 \(O(n)\) 的。因此得到了一个 \(O(n^2)\) 的做法,准确说这里的 \(n\) 需要先除去所有的 \(2\),可以得到 \(55\) 分。
    然后只剩下了半个小时,心想如果能把 T3 的 \(20\) 分暴力分搞到手,就可以凑到三位数了,好歹能让我最后一场比赛的成绩看起来好看一点,所以顿时来了动力。
    但有动力归有动力,我也不可能因为有了动力一下就聪明起来,所以最终比赛还是在我的干瞪眼中结束了,恭喜 T3 抱零。

    275307894a 早就在考场门口悠闲地走来走去了,一出考场他就告诉我他把 T1 切掉了,只是写挂一个小细节没调出来。
    我心底一寒,因为我也一直觉得 T1 可能很可做,该不会人均切 T1 吧,那我就彻底完蛋了。
    然后我就看着他打开 UOJ 群,看到一堆人在刷 T1 是板子题,直接绝望起来...等等,这个人我好像知道,是不是不太对啊,哦,原来他们在说 FJOI,那没事了。
    突然听说 hehezhou 因为 T3 没刚出来也只有两位数,顿时大喜过望,感觉自己其实还有希望?!

    回去的车上听老叶说最高分可能也就一百多一点,而且估出来的队线是 \(60\) 分,说不定真被我瞎奶说中了,可能真有希望?

    后记(Day3)

    没想到今年居然有直播评测?

    除了赛后立刻发现挂掉的 D1T3,居然没有任何挂分,而且 D1T3 居然真的让我水到了 \(10\) 分。
    【后来发现反转了,其实我本来就处理了环(单点)之间的连边,所以树的情况是对的,而有环的情况下会因为重复连边挂掉,那为什么我赛时数据能跑出来?】

    看样子 Day1 很多人都挂分了,所以原本说的队线完全就是在吓人,明明差点就把我心态搞崩掉......
    而 Day2 我的分数虽然看起来惨不忍睹,其实也算挺好的了。

    按照目前的成绩应该是能进队的,只希望不要发生什么意外吧。

    这次省选给我带来了几点经验:

    • 要保持乐观,即便再绝望都要坚持下去。
    • 平时做题真的不能太随便,要不然成了习惯之后正式考场上就容易因为紧张导致大脑一片空白。
    • ZJOI 的难度以及两天的题目分配真就离谱。不过可能正如题目背景里所说的那样,这或许是最后一次 ZJOI,以后都搞联合省选了。
    • Day1 考完可以把自己的成绩报高一点吓吓人,说不定真能把别人的心态搞崩掉。

    (等正式成绩出了再更新一下,在此之前祈祷别出意外)

  • 相关阅读:
    Django 之DRF删改查的API接口
    Django 之DRF原理操作
    通过密码、username、时间戳进行md5加密简单脚本
    Java 之GC常用命令
    ORM 之常用查询、字段类型、约束
    ORM 之单表查询案例
    Django session使用
    K8S 之yaml文件参数介绍1
    K8S 之使用Capabilities与限制网络带宽
    K8S 之容器生命周期钩子
  • 原文地址:https://www.cnblogs.com/chenxiaoran666/p/ZJOI2022.html
Copyright © 2020-2023  润新知