PKUWC2025及NOIWC2025 游记
1.13
坐了一天高铁到绍兴(11:30 ~ 17:30),听了一路的歌。绍兴的环境真的非常舒适,河湖和公路纵横交错。气候温凉湿润,似乎把我咳嗽治好了(?)
宾馆非常舒适!晚上在宾馆熟悉 linux 系统。
进考场试机要做的事:
-
将系统中英文切换由 shift 改成 <Control>space
-
打开 sublime text,右下角能调 tab size。先配缺省源:Tools -> Developers -> New Snippet...,注意source.c++而不是.cpp
-
写 0_checker.cpp
-
设置分屏:配置 Alt+Shift+3:Preferences -> Key Bindings,先把左屏代码复制到右屏,然后翻到大概600+行的时候找到 Alt+Shift+3,把里面的系数改成如下格式(其中不难理解每个系数的具体含义):
{ "keys": ["alt+shift+3"], "command": "set_layout", "args": { "cols": [0.0, 0.5, 1.0], "rows": [0.0, 0.5, 1.0], "cells": [[0, 0, 1, 2], [1, 0, 2, 1], [1, 1, 2, 2]] } },
一些指令
g++ code.cpp -o code -O2 -std=c++14 -Wall -fsanitize=address,leak,undefined
./code < data.in > myout.txt
diff a.out b.out -Bb
ulimit -s 512000000
都别忘了!
1.14(day 1)
早上七点多起了床,在酒店吃早饭,非常好吃!前往龙山书院。步行 1.5km,感觉状态非常好。
8:24 到了报到处,领取了胸牌、午餐券和日程表。来到演艺中心,才 9:00。于是欣赏会场 bgm,一直等到 10:00。期间看到了很多大佬(wmh,wyd,tyx,身后坐着 zxx)。看到一个小朋友打电话说:“我是奶龙!”
听北大的人讲座。讲了北大光辉的 ICPC 获奖及学院招生。中午在食堂一楼吃,四菜一汤非常好吃(把子肉,炒虾,油菜炒香菇,西红柿炒鸡蛋;紫菜汤)!
中午在学校操场上闲逛,偶然发现了 NOIWC 男生宿舍。
12:08 发现周围没人了,于是赶紧前往棒垒球中心,12:21 到了赛场。
迅速开始试机。机子极其好用!没想到竟然是用 oj 考试。先把该配的 sublime text 等东西弄好了,顺便写了对拍。才用了 25min。试机题看了一眼 A,大概会了,但似乎细节有点多,就没写。然后看 B,没读完题试机就结束了。
休息 10min。
13:00 比赛准时开始。
13:05 我看这 T1 不就是结论题吗。分几种情况写一下。
13:10 我写完了。怎么没过,只有 10pts。过了 sub2(a=2) 和 sub4(a>b+1)。没事这至少证明了我 a>=b+2 做对了(
13:20 发现错误。提交。10pts。
13:40 发现错误。提交。10pts。
14:00 发现错误。提交。10pts。
14:20 我要疯了。签到给我干懵了。
14:30 看一眼 T2。怎么是小清新 DS。想了 eps 秒,我会 24pts!
14:35 看一眼 T3。恶心博弈。想了 eps 秒,我会 0pts!
14:40 上个厕所,回来继续杠 T1。我突然发现 a=b 的 case 答案怎么不是 2b+1 的。答案似乎是 b+4(?)
15:00 怎么还是不过!旁边的人似乎已经做了 inf 年 T2 了!我来再想想 T2。这 DS 好像很可做。这个 kth 祖先咋搞?应该就是按照 k 排序,找个 ds 维护:所有点向上爬一步、区间颜色数。有点难的。全局修,维护 last。改成维护每个点下面 k 层好做吗?似乎均摊一下每个点修改次数就能知道吗?每个点上的值的变化都是单峰函数,这我怎么做。
15:15 我还是只会 O(n^2+nm)。确认不会 T2。
15:20 啊啊。我要疯了。总不能 10pts 回去吧/ll
15:40 胡改一通。加了一个用完全图的贪心。交了。竟然 20pts?!我高兴了,上厕所,吃薄荷糖。开始加速想+改。还有 80min,我还有救。突然发现 a=b 的 case 答案是 b+3,只需要用一个大小为 3 的团。进而发现了通过一堆团来找答案的方法。
16:10 点了第 21 次提交。还是 20pts。
16:20 欸等一下,这个是不是能记忆化阿。啊?这不直接 dp??我三个小时在干吗?为啥要当贪心题做呢?
16:25 写了一个 n^2 dp。为啥还是 20pts。哦对,这个等效于贪心的。
16:30 交了一个 n^2logn 的 dp。啊终于过了。开始干呕。上厕所,吃薄荷糖。
还有 30min。优势在我!(?)
16:40 拿到 T2 24pts。
16:45 尝试能不能骗一个 sub。失败了。
16:55 读了 T3。输出 -1 或 0,并没有骗到分。看着结束倒计时。
17:00 结束。
出来的路上听见某人说:“我一个小时就切了 T1,剩下三个小时做 T2,后面的 sub 都假了,只有 24pts。”
100+24+0=124,感觉是大众分。感觉难度 绿紫黑。
晚上看 luogu 群,有大佬说一眼秒了 T2 但是 T1 不会做(?)别人说难度是 蓝紫黑 或者 蓝黑黑。那我还有救。
明天能不能逆风翻盘。
1.15(day 2)
早上 8:00 左右才起床。还是吃早餐,可惜没有炒面了,但是尝了尝煮面,味道挺好。喝了两杯咖啡,感觉整个人都很精神。
前往龙山书院。鉴于昨天只带了水杯差点脱水,今天在背包里装了三瓶矿泉水。
路上一直在听歌,9:00 就到了会场,于是仍然欣赏会场 bgm 到 9:30(期间偷拍了几张骅少qwq)。
两个北大的老师讲课,一个是 AI 在某些游戏中的应用,另一个是通用人形机器人。讲得非常精彩,我基本全程录了像。
中午还是在 1 楼餐厅吃饭。发现由于是先去的二楼食堂,从那里的楼梯下楼比先从会场下楼的人到达的更早,于是比昨天早了不少领到饭。仍然是四菜一汤非常好吃(糖醋里脊,炸鸡排,炒白菜,*菜炒豆腐;西红柿鸡蛋汤)!
今天很凉快所以不热,于是中午就在操场上逛了一会儿,然后回了会场休息,浅睡了不知道多久。
去考场。一百多个学生背着包一起过马路是什么样的。
12:45 左右到了考场。原来昨天机子上留的东西都没删的,好像就没事情干了。
13:00 准时开始。同时点开了三个题,T2 怎么这么短的,T1 怎么是交互题。
13:05 感觉这个 T1 很经典啊。尝试构造了一小会儿,光速想出了 O(n) 找到某一个 leaf 的方法,然后就不太会做了(?)
13:10 不急。先开 T2 和 T3。感觉 T2 很可做啊,要么 dp 要么流。这个 T3 很不可做啊,那我就直接打暴力。
13:20 轻松 T3 24pts 到手。尝试再冲一档,failed。回头干 T1。
13:40 有了一个基本的、大概率错误的做法。随便取两个点 a,b(记 solve(a,b) 的结果是 c,满足 query(a,b,c)=d(a,b)+d(a,c)+d(b,c) 最大),令 c=solve(a,b)。如果 in(c,a,b),那么易得 (a,b) 就是直径。反之,c 一定是一个 leaf。再令 d=solve(a,c),判断 in(d,a,c) 之后 d 也一定是一个 leaf。再令 e=solve(c,d),则答案就是 (c,d) 或 (d,e) 或 (c,e)。但是我还没想好怎么判断答案是哪个。同时还有一个致命的问题就是我需要三次 in 操作才能求出 c,d,e。
14:10 仍然没有什么好的进展。旁边的人似乎还在磕 T1,我稍放了放心,应该 T1 有紫。赶紧跑去上厕所,吃薄荷糖。
14:20 决定先扔了 T1。转战 T2。
14:30 构思了一个线性 dp,自认为很对,以为 T2 是签。写之。样例怎么不过。哦假了。
14:40 转了一个 O(n^2) dp。写之。样例怎么还是不过。哦又假了。
14:50 在 dp 之路上屡战屡败。直接转流。发现这个形式好像很好阿。但是又发现这个 k 的流量可以不流满阿,那费用咋算。还有一个问题,连续 m 个可以多次,怎么算?
15:10 苦思不得解。转回 dp。写了一个 O(n^2logn) 的玩意,这个连续 m 个消不完咋处理阿。
15:20 欸我会 c=1 好像。怎么这么难写。不管了回去冲 T1。
15:35 找到一组 n=8 的错误数据,查出一堆下标和值弄混的错。交,怎么还是 0pts?
15:40 突然意识到不能从 leaf 的角度来构造。然后突然意识到如果我能求一个点的 neighbor 就能做了!
15:55 在草稿纸上画了一个五步流程图,我只需要实现一个函数 find_nb(a) 找到节点 a 的 neighbor 就可以拿到不少分了!而这样也刚好需要 2 次 in 操作!应该是正解的前兆!
16:10 写写写。随便取一个
16:20 旁边的人怎么还在磕 T1,这么难的吗。我哪错了(?)
16:25 哦不对。这个 while (tot>=2) 就很离谱。这个 b=nod[get_rand(1,tot)] 就更离谱。我会!分讨:如果 min=2 说明 a,b 相邻,直接 return b;如果 min=4 且 id 不在 a,b 之间,说明 a,b 相邻,直接 return b;如果 min>=6 说明 a,b 之间至少有两个点,再询问 O(n) 次 query(b,t,i),讨论 max 和 min 不难求答案;如果 min=4,且 id 就是 a,b 之间唯一的点,还是 while(tot>=2) 这么做。
16:30 哦哦哦。有 16pts 了,感人。
16:35 等等这个不能随机的。tot=1 是弱智;tot>=3 也是容易的;那只有 tot=2 咋构造?还有 25min。能不能翻(?)
16:40 啊不管了。我把之前的 while (tot>=2) 搬过来了。交。啊 56pts 了!这 tot=2 没弄出来怎么能过 n<=5e4(?)
16:45 这个 tot=2 好难啊!但做出来是不是能有很多分呢(?)我 T2 还有 11pts 没写。
16:50 写完 T2 一发拿到 11pts。我还有 10min 做 T1。
16:52 我咋从两个点里找离 a 近的啊。考虑取另一个不是这四个点的节点 c。query(b,c,t1),query(b,c,t2)。有用吗?我不知道 c 离 a 近还是离 b 近啊。
16:56 咋弄。好乱。
16:58 这好像怎么也是 O(6n) 次操作的。没法砍啊。
16:59 大脑 CPU 烧了。随机看到了 linux 下的 selfeval。
17:00 输。
感觉已经竭尽了全力啊。为什么这么菜。感觉绝大多数时间都在死磕 T1 啊,为什么在最后半个小时才开始得分啊。
最后是 56+11+24=91。但发现中间有一个小时都在磕 T2,却没有任何分数上的进展,甚至连 T2 17pts 的暴力 dp 都没去下手写,只想着先做出更多的分。或者说如果把这一个小时都用在 T1 上是不是能获得一个更好的分数呢?
这是不是也是一些启发。这样的比赛,四小时三个题,省选难度的比赛,四个小时已经够紧张了,可我却在最为关键的前中期拿出整整一个小时没下手写一些最基础的分数,导致后期时间过于紧张。前期浪费大量的时间在对分数无用的事情上,后期有能提高分数的地方却没有了时间。这是不是这场比赛最为严重的失误呢?
我也意识到,从 2021 年第一次参赛以来,好像没有哪次比赛我是到最后 1min 还有事情没做完,还有分数没写完。回忆一下,2021 年的 CSP-J 和 CSP-S 都是去划水的,具体时间也忘了。2022 年没有 CSP,NOIP 用了 1.5h 磕出 T1,剩下 T2 和 T4 的暴力,思考+实现的时间也不会超过 1h 吧,这样才只用了 2.5h/4.5h。2023 年省选两天都只打了一点点低于大众分,大概都是 2h/4.5h。2023 年 CSP-S 倒是基本上打满了,3.5h/4h,但是死磕 3h 一个很典的 分治+hash 或者 dp 的套路题,也不值一提;NOIp2023 更是耻辱,最终得分(100+20+25+44=189)是我在 1.5h 时就基本上拿稳的分数,甚至 T2 暴力由于多测忘清空导致挂了 20pts,顶天用时 2h/4.5h。2024 年省选我 day1 1.5h 做出 T1,后面也仅是一点暴力分,2.5h/4.5h;day2 骗了一堆分,最后 45pts 暴力走人,2h/4.5h;CSP-S2024 1.5h 做完前三题,剩下 2.5h 就写了 T4 28pts 的一眼暴力,相当于 2h/4h;NOIp2024 似乎分数不错,但是在 T1 一眼秒的不错优势下,被 T2 一个绿题卡了 1.5h 正常吗,用时算上绕弯的时间 4h/4.5h。这么多比赛,就没有哪场比赛,我是到最后一分钟还在做题的,都是到最后 20min 多就开始检查文件和 CE。简单题一小会儿就做完了,难题只把最基础的大家都会的部分分写掉就不再打算进展。最终似乎是一个不错的分数,但是谁知道有很多人,尝试做出更多的分数无果,导致最后也仅是暴力分,甚至有的分都没能写完,这么败给的我。我拿到一个难题,从一开始想的就是拿尽量多的分数,而不是把它做出来,这样只能在诸如 CSP 和 NOIp 这种难度的、有简单题存在的比赛中获得一个不错的分数。而到了省选 day2 这种层次的比赛我却只能看着别人磕 2~3h 做出 T1,而我只有可怜的十几分的暴力。
PKUWC 难度基本对标省选。这两天我都是在 3.5h 的时候才只有 10pts 和 24pts 的分数,最后半个小时才有了突然的进展。尤其是在 day2 的赛场上,当我最后 10min 发现自己只要想出 tot=2 的 case 就能再获得一批分数的时候却已经无能为力。我这才意识到为什么之前在 CSP 和 NOIp 的赛场上,在考场里到最后 5min 还有人在疯狂砸键盘。他们真的是一直在尝试着做出题,而不是提前预算了自己的分数。
又试想一下。如果比赛只有 3.5h 会怎么样呢?那我的分数就是 (10+0+0)+(0+0+24)=34。从这一点,我也似乎明白了究竟该如何应对这种难度的比赛。前期在磕题的时候一定不能一个题思考 1h 却没有写出任何分数,后期真正有题可磕的时候就没有时间慢慢磕了。差点儿能赢在题上,却完完全全的输在了策略和时间上。
分数是 (100+24+0)+(56+11+24)=215,也就只能拿个二等了。但是这一次比赛真的让我感受很深。我希望 2025 年的省选赛场上,不要让前期松散的时间安排,毁掉后期做出题或是获得高分的机会。
愿 NOIWC 一切顺利!
愿 SD 省选 2025 一切顺利!
1.16
早上 8:00 才起。早饭吃了很多。
基本上一天都在宾馆做题。中间去了两次万达买东西(?)可能是昨天受打击了,今天感觉大脑开了光,自己 CodeForces 独立切了一个 2900,一个 2800,一个 2600,两个 2400。感觉找到了做难题的感觉啊,很爽啊。希望这样的状态能保持到省选啊。加油啊。
1.17
早上还是 8:00 才起。上午在宾馆。10:15 前往龙山书院报到。
领到了很多东西:胸牌、书包、一堆餐券、好几本讲义和手册。前往宿舍。和 zmy,wyc,lhy 同宿舍,都是大神呐。环境极佳,有很多生存物资:餐巾纸、毛巾、牙膏牙刷、漱口杯、肥皂和香皂、梳子。空间非常宽敞。床也不错,只是褥子小了点。
中午吃食堂,三层食堂竟然是按照省份分的,可能是按照口味或者人数,山东在 1F。都是自助餐,实现了牛肉完全自由。
下午在校园熟悉环境,在校园里随机游走了一大圈,走过了大多数的楼梯和楼层。
晚餐仍然非常丰盛啊。晚上开幕式,最好笑的节目仍然是 dzd 讲话!绍剧变脸、喷火太好看了!服饰秀《代代风华》太好看了!回宿舍写了点东西,打 CF。被 sb D 题创四了,遂于 23:43 睡觉。由于木板床太硬,同时褥子上出现了不可计数的大小木屑,导致过了快半个小时才睡着。
1.18
早上被起床铃(不知名广场舞音乐)叫醒了。下床看了眼手机,才 7:06。7:40 多 zmy 也醒了,遂去吃饭。早餐非常丰盛啊!美味度相较昨天又有上升!
前往会场。上午是 zky 的《浅谈非确定性算法》,要到了签名耶。刚开始几个题似乎都听懂了,大概 1.5h 后就逐渐掉线。遂主动离线,在 CodeForces 上与一个印度大学生交流问题(锻炼了英语水平/doge)。
午餐仍然非常丰盛啊。中午回宿舍休息了一下。
下午是 sjy 的《图论与连通性问题选讲》。前 1.5h 基本上都差不多听懂了,之后开始上一堆科技,遂再次被迫掉线。
晚餐仍然非常丰盛啊。回了一趟宿舍。发现晚上有集训队论文交流,遂去之。每人只有 10min 的交流时间,于是都很急。第一位 lhx 更是最后 4min 逐渐加速,到最后 1min 连气都不喘了,最后成功卡时讲完。都是 10min 讲 40 页 ppt。一边听一边改了昨晚的 D。
晚上回来的时候经过操场,看到一群人在踢球。试了试跑道,新建的就是爽!跑了两圈,绍兴的冬天,很爽啊。
回到宿舍,发现颈椎疼被跑步治好了。于是决定这一周晚上都去跑。
晚上写了游记。改了改 CF。把晚上的 ABC 做了一下,只做了 D 和 F,E 还没做完就睡觉了。
1.19
早上没听见起床铃,被别人准备吃饭时收拾东西的声音弄醒了,已经 8:16 了!急急收拾东西,背上包赶紧去食堂。早餐仍然非常丰盛啊。
大概 8:50 左右到了会场。是 zqk 的《大模型时代的代码生成新范式》。要到了签名,好看捏。会场里只有一半左右的人,好像很多人都不打算听(?)最后下课的时候老师说剩下的纪念品就随便分了吧。然后坐在第三排的我冲上去,只差一步就抢到了/lb。
遂去吃饭。午餐仍然非常丰盛啊。之后回宿舍休息了一会。
下午是 gyc 的《思维型题目选讲》。上来第一道“比较常规”的题目就是某 agc 的 e,clist 评分 3200+。听自闭了。于是从 5min 就开始掉线。
晚餐仍然非常丰盛啊。晚上还是去了会场,听集训队论文交流,太强了。听完回来又去操场跑了两圈。
回宿舍领到了宿管给的注意事项纸条,竟然明天需要 7:45 集合,所以早上要 7:00 起床(但 10:00 ~ 15:00 才比赛)。之后写了写游记,在 11:10 左右上床睡觉了。
明天 WC2025 rp++。
1.20(NOIWC2025 contest day)
早上定的 6:55 的闹钟,一下就醒了。洗漱了一下,赶紧下楼吃法。早餐仍然非常丰盛啊。
7:30 就来到了操场上集合,浙江、广东、山东三个省合起来的人数严格多于其他所有省()山东人数大概是内蒙古的十倍()
8:00 左右到了考场,等待 0.5h。8:30 进场,座位是 A063。考场发的吃的有两块士力架,一个小蛋糕,一个绿豆饼,一块桃酥。等待密码下发的时候看到几个老哥已经登进了账号。询问之后得知试机密码是 friend,这也能猜出来,太天才了/bx。
试机题是 NOIP2024。到 8:50 就配好环境了,遂开始写板子。写了线段树和点分治,到 9:05 突然意识到会清空机子,于是开始摆。9:20 试机结束。到网球馆外等候。
9:50 进场。账号密码是 dafdwg。
10:00 准时开考。先花一小会配环境。
10:20 开始看题。这个 T1(catfood)。贪心先把 a,b 能配的都配了。然后考虑剩下的个数。如果 <2 一定有解。如果 =2 就判一下是不是 a1+a2=m。如果 >2 一定无解(?)
10:35 交了 T1。selfEval 真的好用。65pts。我来手玩一下。
10:50 哦原来 >=4 如果 a 全相等可以有解啊。判了,交了,95pts。???多测 wa on #17 ???那这个 pretest 这么弱的。
11:15 百思不得其解。顺带着看了后两题,好像都不好做。
11:30 啊原来我没判 b 里能不能配对。改了,100pts 了。
11:50 看起来 T2 更像我能做的。先把 T3 弱智 5pts 贪心骗了。后面的分好像不好做(?)。
12:00 开始杠 T2。光速把 n=2 的 4pts 拿到。
12:05 先写个搜吧,一会说不定要用。
12:20 怎么一分没有???
12:35 不知道为啥错。把输出方案删了,得了 3*2pts=6pts。说明答案是对的。
12:50 又魔改了一下,把搜方案单独写了个 dfs。嗯?怎么有 16pts 了。想了 eps 秒不明白原因。
13:00 我去怎么只有 2h 了。开写 28pts dp。
13:20 不是为啥没分啊。效仿刚刚,把输出方案删了,拿到 22pts。
13:40 不是为啥 dp 对了输出方案会错。
13:55 要完了。不会 100+22+5=127 滚粗了吧。
14:05 尝试从搜里面发现问题,改了好几个版本,都试了试,出现一些不可描述错误。
14:15 从某个版本的比对中发现原来是多测没清空!!! 赶紧改了 dp 搜方案。拿到 28pts,感人。我还有时间。
14:25 写 a=2^k 的特殊性质 12pts。如果 n 是偶数,就从高到低相邻贪心配对;如果 n 是奇数,就把最小的放到最高的位上,剩下的贪心配。
14:35 怎么不对。
14:40 把特殊性质和爆搜拍了一拍。没错啊??
14:50 瞅了一眼 T3。怎么像 DS 优化 dp 题。
14:55 这个 dp 式子好难推。全完了。
15:00 输!
最后 100+28+5=133。这下真打铁了。
下午在操场上随机游走,被 wlx 发现了。可我第一眼甚至没认出他/kk。交流了一下,我得知原来 T2 贪心没过是因为我没判 n 是奇数的时候全相等的情况/zk。
下午三点多吃午饭,五点多吃晚饭。
晚上去听讲题。psj 10min 讲完 NOIWC2025 的三道题目,真的是太强啦。
19:30 开始文艺汇演。大家真的是太强啦。
NOIWC -> JOIWC -> IOIWC -> CNOIWC。
晚上打 CF。C 没判 a_i >= 0,竟然是 Runtime error on pretest 16。pretest 这么弱的,但是感谢这么强的 pretest。最后 pretest passed(17)。哈哈。D 怎么不会。写写写。0.5h 过不了样例啊。欸不是,原来是 x+y 啊,我为什么要算 ax+by 啊。E 不会。胡了一个 greedy,假了。苦思到 1:10,不会。遂于 1:28 睡觉。zmy 过了 F1,太强大。
1.21
早上吃饭。上午上课,sxm 的《》。中午吃饭。下午上课,hlt 的《》。晚上吃饭。深夜睡觉。真是充实的一天!
1.22
早上闹钟响了 6min,把除了我的其他室友全都吵醒了/kk。