HNOI2018游记
Day 0
信息组罕见的假期,早上一觉睡到九点钟。然而机房里的大佬八点不到就来切题了orz。
上午没写什么东西,写了个整体二分的板子题,一个+1写错还调了好久。
下午练了一下(Hash),写起来感觉不错,基本上可以做到一遍过。
晚上当然就是机房互奶啦。yyb奶今年会考生成函数(然而我什么都不会啊orz)。
没什么事早早滚回寝室睡了。
Day 1 a.m.
进考场之前心情十分忐忑。
啥都不要想了看题吧。
T1 寻宝游戏hunt
暴搜(10)分,然后有另外(20)是裸的(dp)。这样就有(30)分了。正解?不会,下一个。
T2 转盘circle
显然是数据结构啊。首先数组倍长然后减个下标,会发现答案其实就是
单调队列可以做到(O(nm))。(40)分有了。
T3 毒瘤duliu
真·毒瘤题
题意就是给你一棵树再加上不超过(11)条边的图问你不同的独=独立集的个数。
首先(20)分(nle20)状压先写着。然后发现(m=n-1)就是一个简单树(dp)。
然后(m=n?)基环树(dp?)。
写着写着发现可以容斥一波。然后又写啊写啊,发现这个的复杂度——(O(n*2^{m-n+1})?)仿佛是正确的复杂度?
但是这鬼题目时限1s还不开O2是要搞什么事情啊。
不管了写着。写完了和暴力拍着没(WA)。
闲来没事测了一下T3的极限数据((n=10^5,m=n+10))。然后。。。
诶怎么卡住了呀,我文件没输错啊。。。诶你怎么跑出来了。
(29s)。
我整个人懵了。这还只是每个点随机选一个编号比自己小的点为父亲构出来的树再(rand)加上(11)条边的随机数据啊。
这什么鬼???
然后测了一发(m=n+7)。(3s)。
我还有什么话可说呢?
于是下考前估分(30+40+70=140)。
Day 1 p.m.
打跑得快。yyb太强了总是虐场。
然后四点多出了成绩,听到自己(110),心里一下子凉了半截。
不管了先去考场再说。
去了趟考场发现自己T3只有(50)然后T1只有(20)。
T3的容斥是(WA)的!前四个点是(WA)的然后后面的十个点过了。
难道暴力是错的?回去一看暴力是对的。也许我是一直拿着两份相同的暴力在拍吧。。。
完全没有debug的欲望,我现在只知道我只要拼一下暴力T3就能有(70)分。
至于T1为什么只有(20)分呢。我翻了一下我写的代码。
for (int i=0;i<n;++i)
for (int j=0;j<65536;++j)
{
(f[i+1][j&a[i+1]]+=f[i][j])%=mod;
(f[i+1][j|a[i+1]]+=f[i][j])%=mod;
}
你这个傻逼你加个if (f[i][j])
会怎么样啊卡常数了解一下?
果然凉了。
T1尝试申请重测,后来据说重新造了数据然后全场重测。不知道结果会怎么样。
居然翻上去了。重测后(30+40+50=120)。
算了不管那么多了。你们奶一口我Day 2翻盘吧。
Day 2 a.m.
感觉状态没有前一天那么好。也只能硬着头皮上了。
T1 游戏game
一开始给我的感觉就是我连暴力都不会打。
想了一下明白了(O(n^2))怎么打。
然后对于(yle x)的数据是有一个性质的,可以做到(O(n))。
然后这样就写了(60)分。
写完了拍着没(WA),但是心里很慌,很怕到时候出了考场大家都说这题是傻逼题然后全场切。
T2 排列perm
题意看了半天没懂,然后写了一个(O(n!*n^2))的大暴力过了样例。目测是过不去的。
想了一下对排列求个反数组。对于排列(p)我们令(q_{p_i}=i),然后限制条件(p_k=a_{p_j})则(k<j)就变成了(k=a_j)则(q_k<q_j)。
这样就可以构出一个拓扑结构了。然后。。。
贪心是错的啊。
不过思路到这里就可以写状压了。(nle15)还是可以随便跑的。
写了两个明显会(WA)的贪心。加个随机化多跑几次答案取(max)希望可以骗到点分。
T3 道路road
(20)分暴力滚粗。下考前半个小时写了个退火。
保守预估分(60+40+20=120)。
听到隔壁的讨论今天的题全是原题。凉凉。
Day 2 p.m.
三点半就出了成绩。貌似全场实际分数普遍大于预估分数。
T1只要倒着做(O(n^2))能跑出(90)。T2贪心没过样例能(AC)。T3。
T3其实就是个简单(dp),然而考场上完全没有往这边想。
不过据说用一些奇奇怪怪的算法就算三个样例全都过不了也可以获得一个较高的分数。
看着自己模拟退火可怜的(45)分。诶。。。
技不如人,甘拜下风。辣鸡游戏,毁我青春。
尾声
HNOI2018。
没有把该有的实力完全打出来,就像Day2T3,完全就是个傻逼题,然而还是什么都不会。
说是不要留下遗憾,但该后悔的总还是会的吧。
今年是没戏了,明年再来吧。
滚回去拥抱学科