首页 > 代码库 > gdoi2017爆零记
gdoi2017爆零记
前言
这次gdoi,用三个词来形容我:爆零+爆零+爆零。本来还希望能在gdoi搞个小新闻(拿个一等然后进Day3什么的)。
Day0
这次gdoi是在东莞东华中学,坐个动车下午3点多就到了,然后打个滴滴去酒店(本来想跟着几位神犇去ingress,然而酒店旁边一个Portal都没有),。17:00去吃饭,结果……司机:你们有谁知道去东华中学的路吗(一脸懵逼)?东华中学实在是太**大了,一个中学占了一整条街,还是一侧初中部,一侧小学部+高中部(听说他们一个年级有50+个班,每个班抽一个学生出来都能占我传统弱校一个年级的位置),小学入学还要面试。话说这次组委会怎么没有把比赛名称打成GD01’ 2017呢,不科学啊。晚上复习了一些算法+颓了一波4399桌球就睡了。
Day1
(其实这一段应该从我睡觉开始写起)
早上起来时因为凌晨太晚睡有点坤(论晚睡的危害)。比赛开始,看了看密码:haveAnice51。嗯,希望如此吧。。。先看了看T1,嗯,一个字符串匹配问题,但是似乎有修改,不会做啊。20分暴力走人。再看了看T2,,,***,题目真的太**长了。似乎是在树上对于每个结点,求去掉子树的集合权值的mex?想到对一个子树以外的部分,可以用dfs序把他们转化成两个区间于是打了个dfs序+线段树乱搞维护。结果打完才想起来似乎思路错了,于是就迅速滚回去打了个20分暴力。。。这个时候已经快11:00了,T3看了看,是个最长公共子串?但是字符串里有退格,数据似乎也不支持暴力搜索,似乎没法做啊。。。直接跳过,推T4公式。T4要求三角剖分的方案数,然后算出里面所有三角剖分方案中点集不同的k边形的个数。然而自己脑洞了几个公式,都不对,直到最后也没推出来。
中午先吃饭再颓废同时等爆零。预计分数:20+20+0+0=40。
开始讲题了。T1还是用字符串匹配的经典算法kmp,而且直接预处理每个模式串的next数组,查询后暴力替换文本串就行了。。。考场上一直以为这种带修改的kmp每次修改后都要更新next数组,竟然没想到next数组只和每个模式串有关,所以暴力修改文本串,接着从原位接着匹配就行了。。。然后讲T2。T2说是因为题目太水,想要增加读题难度于是才让另一个人打了5000字的题面(打死改题人!!!)。T2可以写启发式合并(裸启发式合并或者树链剖分),也可以神奇lca乱搞。T3可以把字符串看成一棵trie,然后二分+哈希或者广义后缀自动机来求最长公共子串(暴力好像可以写个树形dp)。T4的三角剖分方案数其实就是卡特兰数,但是后面求k边形的做法看不懂啊(果然是我太辣鸡了),似乎是DP+解方程,最后再搞个fft或者ntt。
Day1成功GG,总分20+0+0+0=20,T2不知为何莫名爆零。
晚上和众神犇被lz找去谈(jie)笑(shou)风(jiao)生(yu)。希望明天能翻盘。
Day2
早上膜了几下神犇再一次去比赛了。这次密码是:XTT*lateAgain!(XTT是谁啊)。T1看了一下,这不是宽搜吗,再看了看数据范围,嗯,宽搜应该能过。于是50min打了个宽搜。然后看T2,有个汉明距离,似乎可以在字典树上搜索来优化。打了个暴力字典树优化,确实可以优化到50分。T3给了一个原串和一个目标串,每次操作把原串的某个字符提到前面的某个地方,问要最少操作次数和其中一种最优操作方案。不懂怎么写啊,赶紧滚去打了个20分宽搜暴力。T4码农题,求期望值,树上操作和树上查询看起来特别难写,并且强制在线。直接放弃。检查了一下文件名,然后就到滚粗试室的时间了。
中午仍然先吃饭再颓废同时等爆零。预计分数:100+50+20+0=170。
讲题ing~。突然发现T1时间复杂度算错只有50分。优化也很好打,就是记录一下到达每层的某一种类型传送门的最短时间,然后直接用它更新下一层的这种传送门的答案(相当于把每层的同类传送门缩成一个点)。T2 出题人说是非常规做法,可以把每个数的二进制按位划分然后开个桶储存,缩小枚举的范围,字典树暴力优化也是一种写(水?)法。T3是神奇dp,然而我没听懂。T4好像要维护一个可持久化点分树,还要添加虚点把它变成二叉树。动态维护lca可以通过维护倍增表实现。
Day2再次成功挂飞,分数50+0+5+0=55。T2我怎么一直输出0啊……我记得我在赛场上有和暴力对拍过,都是对的啊……QAQ。还有T1,我考后想到自己复杂度算错后,马上就想到了优化方案。。。要是在考场上没算错复杂度就好了。。。果然我还是太辣鸡了。
晚上去看了一波启发式合并,涨了一波姿势。
Day3
神犇去比赛,我去春游……去参观了一下环保发电厂(我的故乡),然后去看了看湿地公园(走了一圈,顺便观摩了一波四代摩拜)。下午颓了一波桌球,看zc飙车。下午刷了一道启发式合并,和pyz颓了一波电影(他似乎5天颓了6部韩国电影,%%%),和zn神犇补了一波番,快2点才睡觉。
Day4
颁奖典礼。这次两天比赛都GG,拿了个3=(20+55=75),不然如果按照预计的话,可以水一个2=(40+170=210)。orz hjw145,被郭老师念了一下名字:“共有hjw(保护他人隐私)等72名选手获得初中组三等奖”。学某神犇一句话:还有4年的时间等待他AK IOI+ACM-ICPC。更要orz ccz rank 1爷三天总分830(270+270+280),让金中蝉联gdoi个人rank 1(上一届是成功解决npc问题的天才高中生kpm)+团体rank 3(下一届是不是就轮到cyc了啊)。
听说这届中考,金中会搞一个政策:noip普及1=,提高2=+,gdoi 2=+满足两次就能稳金中,一次就能另外考试或者中考加分。我去年已经有一次noip普及1=,要是这次gdoi不挂,初三就能在别人复习的时候欢乐地刷题(颓废)了。期待明年noip和gdoi(gdoi不知道能不能参加啊)。(如果这次gdoi不炸的话,我现在应该已经稳金中了)
总结
不知不觉已经水了2000+字,感觉我真有当Day1T2出题人的潜质……
首先,写题的时候要开大脑洞,努力水出更多的分数(我个辣鸡竟然以为kmp修改文本串后要重新算next数组……)。其次,模板要打熟(似乎这次D2T2挂就是因为字典树模板挂)。第三,要有不怕爆零的精神,每道题都打暴力(反正不打也是爆零),在打完之后还要仔细观察一下程序,看看能否达到自己的期望,自己也要多出一些数据来试图hack自己的代码。但是最重要的还是要提高自己的姿势水平,多学一点黑科技(比如启发式合并、后缀自动机什么的)。
还有初三一年(应该只有半年了)的时间。好好提高姿势水平,在B站(bzoj)多刷几道省选原题,准备高中再战。
END
gdoi2017爆零记