HAOI2018游记
前言
很懒。
太懒了。
不仅懒得写题。。连游记都懒得写。。
花点时间填一下坑吧。。不过话说我去年的NOI/APIO/CTSC游记也没写。。
省选前
板子好像一早就打完了,没什么可干的。
也不愿意开新题,学新东西更是不可能的了。就每天打打GTA和CR才维持的了生活这样子。
还是有点慌的,HAOI会出什么样的锅?被退役了怎么办?
平时我的考试策略已经非常保守了,决定这次采用更保守的。
除了一眼秒掉又好写的题,其他题只写暴力,不管正解。
省选这个东西嘛。。进队才是最重要的。像去年一样,在HA随便打打暴力就进队了,今年就干脆把暴力分拿稳,队长什么的,不去考虑了。万一写了正解又是和暴力分一样怎么办?
考试日,上午
去年的NOI教会我什么叫“心态第一”,决定这次按照自己的方法调整心态,只要心态不爆炸,最后1min翻盘都是可能的。
早上8:30开考,窝故意迟到了两分钟,然后一脸淡定地进场。
家长和教练等的很着急,教练不停地给我打电话我也没听见这样子。。估计都快急疯了吧qwq。
算起来省选时间很紧,只有3.5h,根本没时间考虑什么正解啊喂。。。搞得像NOIp一样,题又这么难,怎么可能写正解啊?
先看题,算暴力分。
T1
嗯?背包?NTT?
显然不是啊。。。
指数级枚举好像有40分,先看看。
感觉有点像数论,和gcd有关的东西吧?
是不是把裴蜀定理拓展一下啊?取所有数的gcd?(瞎猜结论)
(大力证明中。。。)
算了。。对于两个数来说是对的,那应该没问题吧?
40pts到手
T2
这个题和CF某个题很像啊?是不是随便构一个生成树出来然后选择一条路径反转啊?
假的啊显然不是。(脑抽ing)
还是打暴力吧qaq。
考虑70分,对每一个点列一个xor方程,直接用bitset解方程组就可以做辣~
咦好像要询问多次?每个点删掉之后询问一遍?
套个分治叭,感觉过不了,不过60分还是没问题的叭qwq。(脑抽ing)
60pts到手
T3
这串串题怎么一脸不可做的样子啊?
先套个SAM,然后?然后?然后咋办啊qaq?
算了还是30分暴力吧。。平方求LCP也是很好写的,就不用写SA了。
不过这数据范围这么鬼畜。。是不是低复杂度暴力能水不少分啊?
如果有时间就写写SA吧,不过T2的分治码量这么大应该是没时间了。。
30pts到手
这样算下来有40+60+30=130pts,感觉还是凑合的,队长是没戏了,进队应该绰绰有余吧?
开始写。
T1
写完了40分暴力,过了大样例,结论应该没问题。
想想后面的分数?能不能DP?
选取子集的问题怎么DP啊?肯定有高妙的做法。(脑抽ing)
还剩2h
T2
2h的话应该足够写完调完线段树分治+线性基了吧?
要不然这个题怎么写。。我这个思路除了这一档根本没什么分啊?
硬刚吧。。。
(30min后)
好像真的和CF那个题是一样的。。确实反转路径就可以了啊?
我刚刚在想什么啊。。。怎么肥四啊。。。
那这个题不是BFS就没了?线性的?
噢还有多次询问啊,那继续套分治+并查集,果然还是有log的。
这个并查集维护的东西有点多啊。。现在只有1.5h了。。就算1h写完也不一定调出来啊?
这样算起来70pts的平方暴力还是很好写的,n遍BFS就可以了。
过了大样例,70pts到手。
T3
大概还剩20min,不写SA了吧,这做法细节好多的啊?
很快写完了平方暴力。拿到30pts。
然后延长30min。。。
要是早知道延长30min我就写T2正解了啊喂!
还剩40min,搜刮一下其他的分数。
T1
噢好像确实可以DP。。。我刚刚怎么回事啊?
不过DP的话要把当前的gcd压进状态里面,复杂度O(np),有60分了。
可以把p的因子都取出来,不过写map要多一个log,还有点复杂,时间不够了算了吧。
最后还有个p=998244353白送的10分。
这样T1就有70pts了,拍了一下没问题。
T2
就剩5min了。。慌慌张张去拍T2。
先写了个指数暴力,又写了个数据生成器。
生成器写起来有点麻烦。。因为不能有重边自环什么的。。不过这个对我的程序没影响吧?
这时候考试刚刚结束。。赶快拍!
WA。
???我大样例都过了啊?
再拍!
TLE,死循环了。
??????咋回事啊????
看了一眼数据,好像是有重边自环的点我挂了。不过我的程序不是能处理重边自环吗?
算了。。70变0。。。出考场了。。
考试日,中午
这样算下来只有70+0+30=100pts,还是挺危险的吧?
下午打稳暴力就好了。
imone说他前两题都会做,T3写了SA的低复杂度暴力,不知道能骗多少分。
“至少有60吧?”我奶他一口。
“那你上午就有260了,tql!”我又奶他一口。
吃饭的时候心态爆炸。。脑子飞速运转,考虑T2到底怎么挂的。
后来终于考虑明白了。。我的程序在处理重边自环的时候确实会出错。。
而且根据我上午的输出来看,错的符合我的预期,那应该是没问题了。
即使是这样,imone还是吊打我90分啊?
Mike安慰我,让我下午翻回来,虽然我知道不可能,但还是答应了。
听有人说T1是什么莫比乌斯函数。。好像有点道理啊?为啥我想起来因数的时候就没往这方面想啊?
考试日,下午
和去年一样,到场还没开考,上午的东西没删,先拍上午T2。
(我去年也是到考场之后先拍上午T2 qwq)
没问题了,放心了。
开考,看暴力。
T1
这个题意。。这个范围。。。
除了平方DP还有什么做法啊?
而且似乎除了平方DP,也没什么做法能拿分了啊?
三次方怎么写啊?这数据范围是搞笑的吧?
除了100分就是20分,而且这20分的暴力还这么难写,当然是写100分。
虽然我很不擅长数数,但是就是要硬刚。
硬刚之前看一下T2叭qwq。
T2
yql给我讲过一个类似的题,这种题都和w[k]没关系的,肯定是先对于每个k算出来之后再乘w[k]。
所以我先枚举k,然后怎么组合一下?
怎么组合啊,好难难啊QAQ?
这个模数有点奇怪啊?是不是NTT模数啊?
果然是。。这要么是烟雾弹,要么真的是多项式。
生成函数?假的吧?
脑子好乱,不会,告辞。
基本确定了策略,先去猛刚T1,然后来T2随便拿一点暴力分。
顿时慌了。。这T1要是刚不出来,基本上下午就爆零了。
不过数数也没几个人擅长吧?估计大家都是一丁点分数。
T1
推了好久式子,没任何进展。
本来是16:30结束,我记成了16:00结束,慌的一批。
不敢乱猜式子,很可能猜过了样例就FST。
只希望做完这个题之后还能给我留0.5h写T2暴力。
搞了半天,搞出来一个式子,过不了小样例。
手算了一波,发现真的过不了,就开始对着样例调系数。
瞎换了一波系数就过了大样例。。。
顿时感觉栋栋挺真的,他当时给我讲《51nod 排列合并机》的时候,就说是自己瞎换了一波系数就过了,原来这种操作真的存在。
数数题过了大样例拿头FST啊,肯定AC了啊。
一看表发现离比赛开始才过了50min,十分舒爽,本来这个题预计2h做完的。
就好像打CF Simulator的时候,突然过了某个题一样23333。
T2
继续,首先枚举k,然后呢?
恰好出现k种颜色,是不是可以广义容斥啊?
(瞎写了一个容斥式子)
那是不是套一个NTT就没有了啊?
板板讲过的!广义容斥套NTT!讲过好多遍!
可是我一遍都没听懂啊QAQ?
后悔没好好听课。。。
(苦涩.jpg)
然后开始慢慢推容斥变NTT的式子。
推了半天推出来一个,这玩意儿对不对啊?看起来挺靠谱的。
这时候还剩1h。。如果这东西写上去写挂了,肯定是调不出来了。。
首先我容斥式子不一定对。。其次我NTT式子不一定对。。再其次我NTT还可能写错。。。
决定先写平方容斥,先不管NTT的部分。
发现直接平方容斥有50分,还是挺良心的。
写完之后果然过不了小样例,继续手算,然后对着样例调系数。
调完系数就过了大样例,爽啊。
这时候只有15min了,把这个代码备份之后,开始疯狂地码NTT。
NTT部分感觉不是很难写,也就是把式子写在代码里而已,但是边界问题还是值得考虑的,虽然实际上根本不会出现问题。。。
然后延长了30min,爽快。
写完之后过不了样例,发现是NTT写挂了,NTT改对之后就OK了。
这时候已经16:45了,幸好延长了半小时,AK辣~
然后开始担心边界问题,诸如n=0,m=0,s=0之类的,试了好多,又考虑好多,感觉没啥问题。
又造了点极限数据,也能跑得过。
然后下午就结束了。
考试日,结束之后
imone果然不会下午T2,意料之中。
Cydiater打野刚考完的时候知道我AK了还D了我一波,没想到他也AK了,强啊。
下午几乎没人A题,基本上得分都是20/30/100,看来数数题还是没什么人会啊。。。
然后就是评测,又是各种锅什么的。。我写在知乎里了。
戳这里https://www.zhihu.com/question/271131295
结尾
看了榜,觉得这次HAOI高手还是挺多的。。不再是菜鸡互啄了。。完全暴力也进不了省队了。。
Primy退役了。。很难过。。却也不好说什么。。他大概是不会买D吧。。
很多人都退役了。。。毕竟省队只有这么点人。。皆大欢喜是不可能的吧。。