zoukankan      html  css  js  c++  java
  • NOI2021 去不了记

    (u1s1 不知为啥标题和 tzc 的游记不谋而合了)

    当了一回也是唯一一回 E 类队员。

    不立 flag。不立 flag。不立 flag。(笑死,其实心里早就想的是,Cu 和 Au 都不可能,只能 Ag)

    7.20

    做了核酸,还是明基医院。

    HA 发大水。南京禄口机场突然出现 9 个确诊。

    ZJ 在比赛期间又会有台风登陆,ccf 选择的是让选手带救生衣 instead of 推迟比赛,恰烂钱。

    7.21

    昨天 hb 跟我说今天的 mns《需要》参加(一周前 hb 喊我参加 mns,我没理他,他打电话我直接挂掉了。所以这次不敢不答应),我心想这疫情都不给线下聚集了,怎么的也得取消了吧。结果改成线上。。。。。

    结果竟然还得了 rk2(虽然只有 13 人)。

    7.22

    由于南京的疫情,下午南京的省队队员统一到某个地方重新核酸检测,比较无聊。

    tzc sjc csy 纷纷口头 AK 下午的多校,而我没打多校,哎,就是玩儿!

    7.23(党的生日)

    昨晚到今早忙忙活活收拾好东西。早上问我妈几点出发,我妈说吃过午饭,我说 OOOOooo。话音还没落,看了一下 QQ 群,「紧急通知」,心肺停止。

    说让已经在火车上的人千万不要出站,不然要隔离。我们也去不了了。噔 噔 咚

    就尼玛离谱。非要在关键时刻多几个确诊,还特么偏偏在南京。bzd 该怎么办,现在全国好像只有 HA 和南京去不了。

    这就真的搞得人很难受,好不容易进了 E 告诉我不能去现场。下午晚上心情不好,颓废。

    晚上打今年第二场 CF,4 题垫底了,人均会 6 题,心态爆炸。早上起来发现 B fst 了,掉了一百多分还剩 50 掉紫,相比之下 wjz 就很牛逼了,差几十上 IGM(后来发现是看错了())。

    7.24(笔试 & 试机)

    在苏子恒的故乡北小考。好家伙,那可是 nflser 的主场啊,搁这塞翁失马焉知非福呢是吧(后来得知下午余姚中学那边在下大暴雨,而南京天气好得很)。下午笔试 & 试机。

    上午到去年日报上背了下笔试,反正今年和去年基本一样,由于大部分还记得背得很快。去 uoj 上测了一下 98pts,我好菜啊,翻评测记录发现 tzc 99,果然是游泳带师,ddw。顺便瞟了一眼 thusc 的时候跟 jt 学的 vimrc 里的内容,下午试机的时候搞。

    中午吃了刺激性食物,肚子咕噜咕噜发生化学反应很不舒服,要是是 day1 或者 day2 就完蛋了,还好笔试较为 H2O。

    下午到了北小,等候室竟然在书画教室。发了密码条,csy 的 id 是 JS-30,他说是按水平排的,我说是按水平倒序排的。然后看了看我自己是多少号,竟然是 29 号(

    人来的差不多了到了隔壁的考试教室,也不是想象中的机房,就是拼了桌子摆了 30 个电脑(后来才知道,30 是 JS 队的人数,NJ 最后一号是 30 是因为 NJ 是个后缀)好像。竟然是装的 noilinux 虚拟机,但是 windows 下没有编程软件,相当于整台电脑都是 noilinux 了。监考老师竟然还是 2020 和 2021 JSOI 的那个很可爱的监考员,好像是负责技术方面的,很牛逼的亚子(后来才知道他就是传说中的 JYY)。听到 tzc 跟 ztr 说了一句「诶诶诶您今年是不是稳了啊」,虽然是大实话,但是不知为啥就很好笑。

    笔试做到一个不确定的多选题:宣布机试开始前能不能登录系统?没记得题库里说,只说不能动键盘鼠标翻看纸质题目,而且我今天好像就登录了(虽说这不是机试),于是就暂时认为能。后来一拍脑门,不动键盘鼠标 ntm 怎么登录???立刻改了回去。30min 结束,35min 查分,不出意料地 100pts。

    然后试机,监考员发了个向 vector 插入 1e8 个数的程序让我们在本地开 O2 看跑多少秒。我到 terminal 里编译竟然无权访问?举手提问,是要拖到外面的目录……user time 0.2+s,这说明这里虚拟机的速度和现场基本没有差别。

    打开 vimrc 写一些东西,忘掉了几条命令,写了七条退出试试看。结果告诉我七条命令一条都没法识别???noilinux 果然是 ubuntu 的《阉 割 版》。试试其它编程软件,gedit 和 GUIDE,首选项都不能调到我满意,这就很方啊。瞟了一眼在我视线内的 tzc 的屏幕,发现他把 editor 搞得和 dev 很像,终究是 ddw 呗。但我找死了都找不到在哪儿括号补全,结果发现 tzc 好像也没做到括号补全。。。。回去又去 vim 试了试,开个 help 看看,哦!我的命令都没有写 set,比如 set nu 我只写了 nu,怪不得呢,是 wsbl。全文默写(有两条设 4 格缩进的忘了)之后效果很好,还加了一些小创意。

    试机结束发现 tzc 竟然 99pts,他竟然不知道丢失密码条扣的是 5 分,只知道扣分!这就不知道如何评价了(但凡能去参加开幕式也不至于不知道这个)……比较开心的是,今年的物资竟然会从现场寄到南京,我正盼着新的书包呢,因为 2020 的书包已经用坏了。

    7.25

    平平无奇的一天。

    晚上打了个 SA 板子,其它板子不想打了,数论和 wll 就随便看看。

    参加了一个 nfls 组织的心理讲座?yjz 那届也有,ls 还特意强调 yjz 那次进国家队了,就好像是这个讲座的功劳一样(

    「每日与 tzc 贴贴/qq,尛 tzc 神仙以涨 rp/se/se
    明天 rp++,tzc 保佑我不垫底/qq」

    7.26(day1)

    昨天晚上睡眠质量很差,早上起来晕乎乎的。8:00 就到了,在车上睡了半个小时回笼觉然后进了考场,清醒程度感觉海星。发了物资吧好像,有胸牌了终于,不至于什么牌子也打不了了。还合了张影,tzc 硬是要站第 1.5 排。

    密码条没有密码,下饭。这次弄丢应该不会扣分了吧/cy

    9:00 之前一点进考场,竟然坐在 djq 对面,吸吸灵气。本来准备 9:00 开考,但是解压密码硬是发不下来,再拖到了 9:10,又拖到 9:15 终于发了解压密码。好家伙,竟然是今天八位日期,这波下饭啊,day2 也直接输入日期算了。

    花了 10min 调好了首选项写好了 vimrc 开始看题。果然都是 O2 c++11,ML = 1G hopping。但是三题 TL 都是 1s,有点不爽。扫了一眼,三题好像都是树 / 图。。。。。看一眼 T1 发现这不就是曾经某场 hb 模拟赛的题的弱化版吗?当时我好像没补,那估计废了。然而想了半个小时竟然想出来了,1e5 大常数 2log 加上 3 组测试数据真的能跑过 1s 吗……感觉勉勉强强,先写吧。

    写了 200 行 4.5k,线段树维护三个东西。。。。写 + 调到 2.5h 的时候(本来就对 noilinux 的操作不熟练,再乘上这大量的调试,我简直凉凉)正确性终于出来了(好家伙,比赛一半时间已经过去了,不愧是我)。最后一组数据跑了 0.94s。优化了一堆地方,都没什么卵用,有的时候甚至负优化到 0.96s。最后灵机一动,我这 fread 快读不还没用呢吗,这题读入这么多。加上了之后变成了 0.82s,应该挺稳了吧,毕竟虽然大样例 n = 8e4,但主要是看 qu 啊,三个 qu 都是 9.5e4 的样子。而且看这大样例这么强,就不对拍了吧,毕竟 noilinux 这么难用,而且已经过了 3h 了(讲道理这么多场正式考试我啥时候对拍过?)。

    好家伙,只剩 2h 给我搞后两题,最多只能打打暴力了吧。。。T2 我本来理解的题意感觉很正确,结果中途对「相交」的定义进行了修正,这一修正为啥看起来就一点都不合理了呢(flag)?我感觉很 xor,心情也急躁了起来,算了先按照它说的想吧。接下来便有了一段堪称糊涂到最高境界的思考(建议不要看,智商会被拉低的):

    先看着 A 的部分分好像挺好想的,可以每部分分开算。首先由于这个「相交」的定义对两对点是独立的(sb * 1),可以想到拆贡献(sb * 2),每对点如果连边会产生一个奇偶贡献,如果是奇的就需要计算包含它的方案数(sb * 3)。方案数怎么计算呢?这看上去是个这个 A 部分的核心。我看这是个奇怪的排列问题,每做一个决策,不同的决策剩下来的图都不一样,这么暴力搞要 (mathrm O(n!)) 啊。再定睛一看,这不就和行列式的定义有异曲同工之妙吗?所以二分图完美匹配方案数就是邻接矩阵行列式(sb * 4)!

    那么我们就可以枚举贡献为奇的点对,得到剩下的 (n-1) 阶方阵计算行列式(sb * 5),这样可以过掉比较小的 A。大的 A 怎么搞呢?不难发现对每个点对删除它得到的行列式是大邻接矩阵的余子式(sb * 6)!这样如果线性无关的话可以求伴随矩阵(sb * 7),由于是个 01 矩阵还可以 bitset 优化高消(sb * 8),好耶!但是关键它不保证线性无关啊。。。。所以相当于白想。

    那没关系啊,把小的 A 拿掉也行啊。但是越想越不对劲,迟迟下不了手开始敲代码,仿佛思路还剩一点漏洞没有补,但是就是不知道在哪儿,朦朦胧胧的,这种感觉很微妙。再缓过神来,等等?为啥要 (mod 998244353)?它问的不是所有方案的奇偶性的和的奇偶性???而 tm 是偶方案 - 奇方案?这下完蛋了,看错题了,想这么多都白想了。

    所以要分别求偶方案与奇方案(sb * 9)。这怎么搞呢,总方案数我会求,就是行列式嘛(sb * 10),但要分别求两部分就很不会了呀。最后只能草草打掉前 40 分,其中包含 A 的小点,可以直接阶乘级别打暴力,也可以状压 DP。为了保险我写的是状压 DP。写完之后测样例怎么也过不去,检查了好久代码感觉一点锅都没有啊,这怎么回事呢?难不成题目还是理解错了?对修正之后的公式定睛一看,我草!真的理解错了!修正前后并没有本质差别!太方了吧,这时候还剩 1h15min,我要赶在 1h 前把这题搞完啊,不然 T3 没时间搞了呀。还好正确的题意下依然可以状压 DP,把之前写的改一改可以补救,过了大样例,心里的石头终于落地了。

    读完上面这段我做 T2 的经历的你,是不是感觉很迷惑?我 tm 为啥思考的每一步都是错的?题意还理解错了两次?我也 bzd,大概是平均下来 1h 要做好这道题,比较慌吧;再加上刚刚学完线性代数,难免对行列式的定义漏考虑了一个代数因子。

    T3 就比较没劲了。小点写暴力大概是 1000 三方的,但是想起来图的遍历可以 bitset 优化到 (mathrm O!left(dfrac{n^2}w ight)),就过了,比较好写。另外一个 (m=n-1),一开始以为是链,后来发现其实是个外向树,0 和 1 似乎都不难。0 异常简单,lca 都不用求。1 比较麻烦,最后还剩 10min 了,肯定来不及写了,就放弃治疗,嚎啕大哭。两个拼起来 36pts,都是一遍过样例,比较顺利。

    估分 100 + 40 + 36 = 176,自我感觉良好(flag)。问了 tzc 他竟然 219,太牛逼了,现在根本打不过他了,怎么这么强。ymx 说他不知道多少分?就很玄学。跟 tzc 交流了一下才发现,原来 T2 的总方案数是积和式,偶 - 奇才是行列式,而积和式不可做,可以反证偶和奇不可能分别算出来,我真是一个大 sb……然后他把大的 A 的点的各层行列式乘起来就过了?他也不知道为啥,真是不可思议。后来 csy 根据 (|AB|=|A||B|) 以及邻接矩阵相乘的意义给出了一个老奶奶都能懂的证明,顺便扩展到了 100pts 做法(先乘后求行列式),100pts 就这么到手了……zblzbl。

    去了 ISIJ 的时候 wjz 带领我们去的西安面馆吃了一波 3:00 就回来了,但是至少 4:00 才出分。于是就各种划水:刷知乎,看别人在公屏之上打游戏。csy 介绍了一个新游戏 splix.io 好像挺好玩的,这就是围城大作战的网页版。

    4:00 ​进考场准备查分,数据已经发下来了,分数还没发下来……本来想着等一会儿分数就应该发下来了吧,结果迟迟不发。我等不及了,直接开始测数据,各种 subtask 测最大的点(手都是抖的!),都过了万幸,其中 T1 跑了 0.9+ 秒,应该还行。又等了一会儿下发了纸质版的评测结果(因为没有能力发电子版),果然没挂分(达成成就:在 NOI 赛场上 A 一道题),看到这熟悉的表格格式还是有一些亲切感的。tzc 竟然也没挂分,yyds ddw。lxr 190+ orz,sjc 和 ymx 都比我低,至少不用垫底。

    后来发现我虽然有 150+,但这场 day1 可能是近很多年最简单的一场,T1 竟然有 211 AC,AK 的都有 30+ 个,所以我这个分还是挺低的,如果明天同样水平的话最多 Ag 偏后吧。不过心情还是不错的,至少没有发挥失常(但是仔细想起来,想 T2 的时候脑子里那片浆糊,不是发挥失常又是什么呢?我本可以自己推出来满分做法的),把 noilinux 的操作熟悉熟悉再学个 gdb 可能就能减少很多调试时间,就能给后面的题留更多的时间。至于 T2,我没有学过 lgv 引理,到明年这时候肯定学过了。

    晚上试图装 noilinux,放到 VirtualBox 上调不了分辨率……只能下载 VMware,终于可以调分辨率了……

    7.27

    平平无奇的一天。

    整天都在折腾 vim 和 gdb,也没折腾出啥玩意来。

    day1 是三道套路题,那 day2 可能是三道思维题。

    「FLAG:明天还不考非传统我就把 CCF 吃掉」

    希望明天能翻个盘吧,至少到个 Ag 中位?rp++。

    7.28(day2)

    昨晚比较早就睡着了(怎么判断的呢,主要是我睡着之前我爸还没睡),今早起好早,因为 8:00 就开考了。

    一路上心里都在想「今天是不是有非传统题啊」「今天是不是都是 sweet tea 啊」「今天要翻盘啊!!!」比较紧张,heartbeat 比较奇怪。车上发现没带胸牌,真就连胸牌都打不了了呗!

    到了发现我是第一个来的,另外我的座位号相比昨天没变(这全场期望只有一个人),说明我今天会垫底!spl 来了之后问了一下,不带胸牌并没有关系,那没事了。

    7:50 左右进的考场?本来准备 8:00 开始,又拖到 8:10 开始,结果到 8:09 的时候解压密码还没发到 NJ 分赛区,听见 JYY 说了一句「过分」,感觉很可爱!然后 8:10 准时发了……今天解压密码竟然不是八位日期,还算有创意。

    扫了一眼题目概况,wdnmd 今天咋还是没有非传统题啊。不过 TL 都是 2s 比较 hopping。看这 T1「量子通信」这 title 以为是个伪装成传统题的通信题,后来知道是我想多了,ccf 真无趣。还有为啥 T2T3 ML 都是 1G,T1 给我来个 380+M?难不成要卡空间?

    开场脑子比较清醒,不希望再像昨天那么糊涂了,迅速把三题的大致题意浏览了一遍,完蛋了好像都不是很好做的亚子,尤其是这个 T1 感觉有点鬼 true?我今天该不会 A 不掉 T1 了吧不会吧不会吧。

    发现了这个字典的随机性质。但是害人的是询问串不保证随机,也就是可以根据字典来造,如果随机了答案就全是 0 了(有三个随机的点,送的)。算了一波随机两个串相差低于 30 位的概率,大概是 1e-38,这样子任意一个询问串最多会有一个匹配的字典串,但也没啥用好像。想算各种 1 - 很小的概率的很大次方,但是计算器和 c++ 精度都不够(比赛结束 tzc 告诉我可以 ld,wssb),xtbz。

    撕烤了一会儿根据 (k) 很小这个性质胡出来一个大概可行的算法:每次随便选若干位(几十的亚子),那么一个询问串如果有匹配的字典串的话,会有不大不小的概率这若干位全部相同,装个桶 chk 一下即可,然后多跑几十次可以保证正确率。选 (x) 位那么这个概率是 (dbinom{256-x}{15}/dbinom{256}{15})。一开始选的是 (x=30) 然后竟然把 (256-30) 算成了 (236),你很下饭 ycx。最后选了 (x=20),这样 4e5 除以 (2^{20}) 每次期望匹配个数好像连 1 都不到,这个概率也使得跑 100(后来卡常缩到了 70,一样必过)遍不 AC 的概率比 tzc 不 AKIOI 的概率还小。

    另外这个强制在线相当于没强制一样,拆成两个就可以离线了。虽然一开始不知道有什么用,后来发现可以 70 次每次速战速决,可以省空间。就这样大概想到 1h 的时候开始写了。写到装桶的时候卡住了大概 5min 不知道如何把 20 位散在 256 位里面的 bitset 迅速转化为 20 位聚拢在最左边的数,不然就没法装到下标里。暴力重构的话复杂度要多个 (mathrm O(20)),比较慌。最终还是决定牺牲时间。写完之后大样例好像过的挺爽的,但是最后一个大样例规模比极限数据小 10 倍我都跑了 0.5s 了,赶紧得测测极限数据。

    新开了一个 terminal 造了个极限数据测了一下竟然要 9s。。。。。。遂把 vector 改成了链式前向星,然后再把其它能卡的都卡了,最后卡到了 5.2s,无能为力了……此时大概 2h15min,这次可不能像昨天 T1 花掉 3h 啊。那怎么办呢?思前想后,我做出了一个艰难的决定(后来事实证明,这是一个无比正确的决定)——卡时。在 2s 时限内能跑多少次跑多少次。重新测了一下,怎么只跑了 13 次?测了一下 gen 函数的时间,tm 竟然要 0.9s……ccf 真特么下饭(后来意识到是我在 gen 里加了 init bitset 的成分,下饭的好像是我)。随便算了一下,13 次的话当 (k=15) 时一个询问的正确率只有 0.997 了,那 1.2e5 组询问岂不是废了。但是有些 (k) 很小的点 AC 概率应该依然很大的,以及 (n) 较小的点可以跑完,还有那三个送的点,算下来至少可以拿 68pts,还行了,还行了……这时候已经 2h30min 了,不能像昨天那样一题 3h 了,赶紧 quit 看 T2 去。

    这个 (f) 函数就很鬼畜,怎么展开呢。一开始试图展开前几项找规律,太复杂了……后来试图研究增加一项的时候的变化,哎玛,这不是个线性变换吗?那用矩乘描述之后就有结合律了,就可以从左往右算了,很舒服。那小点和 append 就可以直接做,相邻不相同的点可以预处理,也可以转化成 append,那就有 50min 了。试图研究 EW 序列改变的时候矩阵序列怎么改变,发现有点复杂,不管了先看 T3。这个 T3 不太可做的样子,我好像连暴力都不会打。翻翻 pdf 翻到了样例解释,一下子就看到了「容斥原理」四个大字(好吧并不大……),这搞笑了样例解释还提示算法???那我好像确实会了 (nleq16),但是 (m=1000) 好像时间爆炸。(n=32,m=1) 依然不会。那这题好像可以拿到 24pts 了,不戳不戳。这时候还剩 1h40min 了,要赶紧写了,heartbeat 又厉害了起来。

    写 T2 十分舒适,这玩意几个函数封装一下非常好写。但由于 subtask 比较多,写完还剩 30min 了,赶紧冲 T3!还剩 15min 的时候冲完了,第一个样例过了,第二个样例死活过不了,到最后还是过不了,只能弃疗,准备料理后事。这次不知道为啥除了要填文件字节数还要填奇怪的校验码。估分 [68, 100] + 50 + [0,24] = [118,174],跨度比较大啊!

    问了一下大家(神仙们例如 csy 除外!)好像都 150 左右,那没事了。遂去西安面馆吃了个饭回来颓废(回来的路上突然下起了雨,而我又没带伞,衣服湿透了)。一开始颓 splix.io 开了 teammode,结果一个人都没有,就把整个 field 都围了起来,测出了边长是 600。颓腻了去颓 generals,FFA 两次碰到 wjz,wjz van 游戏被发现了吧!id 是我起的 1004535809,tzc 这家伙可能 bzd 吧。

    下午 3:00 的时候现场就出分了,但我们这边就比较 pigeon,一直到 3:50 才不加通知地打印好了分数搞突然袭击。然后第二个发的竟然是我的。我,一,看!woc,T1 竟然有 96pts?????这 tm 真的是我没想到的,正确率明明很低啊。后面 T2 没挂,T3 也捡了 12pts,不错不错,相对自己的预期有点满意啊。而 tzc 117 就有点惨了,昨天他比我高这么多,算上今天一来一去我 tm 竟然翻回来 3 分!!终于不被 tzc 吊打啦!!!另外几个人 day2 都比我低(依然除了 csy),总分除了 csy 和 lxr 也都比我低,lxr 我主要不知道 day1 多少。话说我跟 tzc 路过隔壁教室的时候竟然看到了有个席卡上面写着「汤晓燕」,ycxtzctietie!!!11

    回到家里颓废,一直在水群。他们现场那边好像还在讲题,等他们讲完在群里等了个榜的各页的照片。Au 线竟然只有 498(从没想过与 Au 只有 60 分的差距),Ag 线竟然只有 310。。。都比预料中的低好多。数了一下正式选手中比我高的有 92 个人,好家伙进前 100 了呀。非正式里面我是 rk13,lxr tzc 都紧挨着在我下面。ztr 竟然全场 rk6,真是功夫不负有心人。

    晚上补游记(话说已经很久没在游记里刻意划掉说补游记的部分了,这次看到 tzc 游记才想起来)。话说为啥这次游记会写这么长啊。。。。。。

    7.29(tzc 的生日)

    上午闭幕式好像,不过跟我没啥瓜系。

    正式选手和非正式选手的榜竟然上午就在官网公布了,ccf 还挺勤快。

    怎么说呢,这次 Ag 虽然是意料之中,但是也既看到了与 jxd 选手水平的差距,又看到了与 Au 并不是遥不可及(比如 day1T2 学过 lgv 引理那 60pts 就直接补上来了)。不管怎么样,接下来一年都要认真卷啊。

    NOI2021,是银白色的。

    7.31

    获得了 9 级金钩,好耶!

    话说 kkk 在第一批上金钩的时候把我漏掉了,所以 tzc 等人比我先获得金钩,kkk 坏坏!!!

    另外 ccf 发布新版 noilinux 了,增加了 sublime(正愁 vim 难用呢),gdb 也是最新版本,这真他妈是天下第一等好事。(16 号发布的,wtm 今天才看到)

    珍爱生命,远离抄袭!
  • 相关阅读:
    IP分类:A,B,C,D,E五类
    Makefile之“=”、":="、“+=”、“?=”
    Makefile之字符串函数
    Makefile之嵌套执行make
    vi中使用“/”查找字符
    Makefile学习之显示命令与出错命令
    【转】Unity中写GLSL(一)—— 简单的diffuse color
    关于编译GITHUB上的工程
    认识了一个新的手机游戏剖析工具- SnapDragon Profiler
    U3D资料收藏
  • 原文地址:https://www.cnblogs.com/ycx-akioi/p/noi2021-travelogue.html
Copyright © 2011-2022 走看看