嗯哦哎辟 NOIP 2022 游寄

Day 0

虽然是南京本地人,但因疫情原因,晚上决定去住了酒店。

看了一眼考场,感觉位置小得离谱。

刚开始去了 409,发现房间里一股难闻的味道,RP - -

然后换房间,遇到了 yaoxi 神仙。然后等了很久,换到了 20 20 20 楼, 2009 2009 2009。发现两个房间去掉楼层号之后的部分都是 9 9 9,看来明天 NOIP 会考 9 9 9 分了。RP - -

进房间,然后被告知没办手续不能进。RP - -

然后看世界杯,刚打开电视伊朗队就绝杀了,然后威尔士猛攻无果结果又被伊朗进一个,最后 0:2 输球。亚洲要崛起了!!1

摆了一会儿的烂,看了会游戏解说,然后继续看世界杯。后卫滑了一跤送乌龙助攻,真是给我整绷不住了,这种事情难道不是我这种足球菜鸡的专利吗?看了上半场不看了,毕竟睡觉要紧。睡觉前本来打算放音乐的,但误触点到了罗老师的法律课堂,听了一些比较厉害的东西然后就睡觉了。

晚上翻来覆去睡不着,全怪这床太歪了。

Day 1

早上打早餐,不知道为什么突然手抖夹不起鸡蛋了。好在一位好心人过来帮助了我,瞬间感觉自己就是个傻叉。RP - -

和 yaoxi 聚聚以及家长吃饭,其他同学也陆陆续续地到了。吃着吃着突然吃不下了,但为了履行光盘行动逼自己啃下去了面包。RP - -

拿了东西去了考场,右边的右边的右边的右边是 zxb 聚聚,左边的左边是 jcy 聚聚,右边的右边是 qzx 聚聚。试机的时候不想戴口罩结果不断被工作人员打扰,最后实在忍不住了,直接开喷。RP - -

感觉自己完全没有做好打 NOIP 的心里准备,完全没有马上就要考试了的紧迫感。感觉要寄了呀!RP- -

还没开场就被热死了,然后脱掉了几件衣服发现没地方放。RP - -

然后看到了下发的 zip,使用密码打开了 zip,但发现用该密码打不开 pdf?扫了一眼数据,发现有计数题。然后和左边的老哥一起问:为什么密码错误?然后 jyy 说密码条还没收到,没法下发。先下发数据,不下发题目是什么操作?小丑竟是我自己,RP - -

然后比赛就开始了。

开 T1,题目比较长,但觉得不是很难。整理了一下条件,然后就开始写了。因为细节没想清楚,在 15 min 的时候重构了代码。开场 30min 所有的样例。想起 CSP-S 这个时候我已经过了前两题了,瞬间有一种不好的感觉。

开 T2,想了 20min 觉得非常不可做,连 k = 2 n − 2 k=2n-2 k=2n2 都不会。 m ≤ 14 m \le 14 m14 感觉可以暴力哎。但就这么一点儿暴力分还是最后再写吧。

开 T3,看完题想了想觉得不是很难,对各边双缩点得到一棵树。如果已经确定了每个边双内选不选,那么对答案的贡献就是 2 m − s z 2^{m-sz} 2msz,其中 s z sz sz 是其最小斯坦纳树的边数。然后随便写了个树形 dp \text{dp} dp 上去,过了小样例,发现过不了大样例。

此时过去了 1.5h,只有 100 100 100 分。心态有点小波动。喝了点水上了个厕所。

回来继续调 T3。调了调发现做法假了,LCA 处不一定有关键点啊!此时过去了 100min,心态已经开始崩了。然后强迫自己冷静下来。随即编出来一个新的做法:维护 f u f_u fu 表示 u u u 子树内有关键点的贡献,当固定 u u u LCA \text{LCA} LCA 的时候,贡献可以容斥计算。写了写发现又过不了大样例!!!

此时过去了 2h。老子不想就这么退役啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

又调了 15min,比赛即将过半的时候,发现是个细节写错了。改掉发现过了各个样例,然后就 ⌈ \lceil 直接丢了 ⌋ \rfloor

接着看 T4。看完感觉很可做,是我比较喜欢的一类题。发现可以离线下来分治,然后就没了?分析了一下实现细节,大概要写一个分治,一个线段树,还有一堆 vector 的操作;线段树每个节点上要维护 12 12 12 个东西。

写就写!谁怕谁!反正 100 + 100 = 200 100+100=200 100+100=200 应该是有一等了。

结果调了 1~2min 就过了小样例和大样例,但我寻思 n = q = 3000 n=q=3000 n=q=3000 的样例怎么跑 2s 呢?然后突然发现:我的复杂度是 O ( n q log ⁡ n ) O(nq \log n) O(nqlogn) 的!!!

原来我这相当于把标记插到了对应点的整棵子树中。

不愧是我,哈哈。还不如去写个 O ( n 2 ) O(n^2) O(n2) 的暴力。

哎,什么, O ( n 2 ) O(n^2) O(n2) 的暴力?不对,如果我把这玩意和我写的那东西拼起来不就 O ( n n log ⁡ n ) O(n \sqrt {n \log n}) O(nnlogn ) 的了吗!这是不是就是正解呢?显然不是,应该过不了,但能过 1 0 5 10^5 105 的分啊!于是加上一个根号分治,过了大样例!好!

然后尝试把 query 改成标记永久化,但发现自己没复习标记永久化,忘了怎么写了。寄。于是去掉标记永久化,就搁这不管了吧。感觉线段树的常数很大,随便 ⌈ \lceil 调了调块长 ⌋ \rfloor ,然后就扔了。

回去把 T2 20 分暴力打了,走人。

估分 100 + 20 + 100 + [ 76 , 100 ] = [ 296 , 320 ] 100+20+100+[76,100]=[296,320] 100+20+100+[76,100]=[296,320]


下午打了会儿乒乓球。但心思很乱,球都是飘的。

infoj 上测出来 285 ( 320 → 285 ) 285(320 \to 285) 285(320285),开幕雷击,挂惨了。

Day 2

洛谷最后一题直接给我卡成 76 76 76,我寻思洛谷怎么比 infoj 慢那么多?

Day 3

有道小图灵测出来 290 290 290,好在过了 T4。


看了 T2 题解,大概就是将 k = 2 n − 2 k=2n-2 k=2n2 使每个栈的大小 ≤ 2 \le 2 2 使得总能消的算法通过调整扩展到 k = 2 n − 1 k=2n-1 k=2n1 的情况。感觉挺妙的。但我觉得 k = 2 n − 2 k=2n-2 k=2n2 应该在我水平范围内的呀,为什么我不会啊???

T3 挂了就非常不应该,去年就这么挂的,今年还这么挂。真的是不长教训。

很难想象,这次要是没过掉 T4 我会打得多差。已经回去学文化课了。希望从文化课回来的时候能更加稳一点吧。

Day inf(?)

出分了, 100 + 5 + 80 + 100 = 285 100+5+80+100=285 100+5+80+100=285,因为两个 Byte 挂了 35 35 35 分之多。

upd: 于 3.31 检查本文,在省选前重新审视自己曾经的比赛策略。

你可能感兴趣的:(算法)