GDKOI2017游记
去年的GDKOI在寒假(虽然我没参加),但由于一些机♂缘♂巧♂合♂,比赛时间变成了开学之后的第一周,于是直接导致了当我的同学们在认真学习的同时,我在广州无所事事地和同学谈♂笑♂风♂生♂。(太好了,可以多放两天假,有种幸灾乐祸的感觉)
===========================这是一道分割线===========================
Day 0
早上7:00起床,到集合点时刚好8:00,然而……一个人也没有,等了10分钟才看到了csl神犇
在动车上打了一通线段树(然而常数太大,交的时候被卡了),然后颓了一波MC(然而笔记本内存不大,玩起来一直卡)
下了动车,感觉广州的天气比汕头热多了
今晚住在中大校区里的西苑宾馆,感觉条件比酒店差多了……网速感人,交个题都要跑到走廊才交得上去
===========================这也是一道分割线===========================
Day 1
早上6:30起床,闹钟关了两次才关掉,实在是吃枣药丸
8:15开始比赛,T1看了一眼:爆搜,40分钟解决;T2一看题意,不是sb区间DP吗(虽然这是60%的解法)。然而,我代码打到一半,有个出题人突然闯进来强行改了题意,基本整份代码都得重新打,并且预计60分就这样硬生生地变成了预计30分(在此祝这位出题人身体健康阖家幸福)
草草打完T2,开始磕T3。看到T3题面,咦,似乎是数学题,于是先打了个爆搜,然后找一找规律,当P=1时很容易就能发现答案就是1,然而当P=2时,却死活发现不了规律,就拿了个30分走人
T4一看,似乎是一道区间DP,f[i,j]表示从i到j要用的袜子数量。可是袜子的容量和重量限制有1e9……不会转移啊……于是就水一波贪心,用v[i,j],g[i,j]来表示在用了f[i,j]只袜子时,第f[i,j]只袜子使用的容量和重量,然后用贪心来决策。
预计分数:100+30+30+10=170
实际情况:90+0+30+60(what the ***)=180
题目讲评中……
T1的解法确实是爆搜,不过也可以建图宽搜或者并查集,有一半的选手A了。然而我没有……比赛时打得太开心,没判主人公不会被炸的情况……于是丢了10分
T2:括号序列。爆0是因为题目要求子串……我打成了求子序列……正解是先预处理01序列的前缀和,这样,前缀和序列中一段元素都>=0的子串就是一个合法的子串。在hard模式下,要在序列中某一段加一个括号,我们就可以把它看成在前缀和序列中的某一个数开始整体+1,或整体-1,然后判断一波就行了。这种解法效率O(n log n)。也可以把0看成左括号,把1看成右括号。这样处理,合法的子串就是一个括号序列,然后用栈来处理。hard模式下要插入括号,就看一看能不能在某一个地方插入括号使两个括号序列连在一起或使括号序列延长。效率O(n)。
T3:矩乘优化插头DP。插头DP我不会。。。不过当P=2时,ans就是兔子数列(Fibonacci数列)。。。我怎么没发现呢。。。难道我爆搜打错了。。。
T4:神奇DP。其实应该用f[i,j]代表从i开始,用了j只袜子,最多能取到哪个礼物。这样的话,可以从i一侧取一段装满袜子,也可以从另一侧取一段装满袜子(袜子要装满才能换一只,所以只要从两端选一段装满袜子就行了),于是f[i,j]=max(f[f[i,1]+1,j-1],f[f[i,j-1]+1,1])。先预处理一下f[i,1],然后就直接上DP。不得不吐槽一下数据,贪心居然能捞到80分,而我的半DP半贪心也拿了60。
今天有一位AK爷,正巧他的名字叫做Yang Jia Qi(YJQ),这位广东YJQ不禁让我想到了四川的YJQ。。。不是所有的神犇都叫YJQ……
P.S.笑料分享:
1、选手:“这道题我有一种水法……balabala~,我估计能拿个50分。”
出题人:“太好了,来,握个手,我专门卡了这种水法!”
2、出题人:“这道题有几个70分80分的,他们应该写的是水法。”
“下面这个同学80ms跑到了八十分,让我们听一下他是怎么水到这么多分的”
选手1:“balabala~其实我看错了题目条件”
出题人:“……”
“再下面这个同学仅4ms也跑到了八十分…”
选手2:“我和刚才那个同学一样,也看错了…”
出题人:“……”
“让我们请上这位同学,他0ms跑了七十分”
选手3:“我也看错了”
出题人:“我觉得这道题不用再讲下去了” “下次我卡水法也应该考虑选手把题目看错的情况……”
今天的比赛失误了两道题,要不是T4水了60分,分数不知道会低到哪里去。。。别人T4看错能捞80分,我T2看错怎么就全爆零呢。。。话说今天的题目比往年水很多,T1~T3都被TJM一眼秒杀(虽然我没搞出什么大新闻),%%%TJM
===========================这又是一道分割线===========================
Day 2
今天的题明显比昨天的题难。这才是正常的GDKOI水平(好像还是比往年的GDKOI要弱?)
今天的T1是求一个0~n*0~m平面上的顶点是整点,有一边平行于坐标轴,面积为整数的位置不同的三角形个数(如果两个三角形能完全重合,则算一种三角形)。很显然ans=平行于x轴的三角形+平行于y轴的三角形-同时平行于x轴y轴的三角形,要推一坨数学公式,不过其中有很多对称的情况,所以可以简化一下公式。具体公式就不贴了。我推公式,调代码,在这道题上足足耗了一个多小时。
磕完T1,看T2。T2一看,还以为是求一下最长上升子序列,看了几遍之后才明白和序列上升无关(可以通过调整出场次序来是战斗力序列上升),只要满足战力不同即可。于是离散化一下,贪了个心(实在想不出其他解法)。预计有60分(看Day1的T4的水数据就知道了)
接着写T3。T3就是对于1~n中所有互质数对(i,j),算出每个(i+1)*(j+1)的总和。似乎是欧拉函数乱搞?不过我不会筛。不过这道题只有3个点,每个点时限有15s,不写个暴力都对不起自己。(然而出题人在评讲时说:“一道45s的题怎么测的这么快呢?因为很多人没写。”)
T4码农题,一看题面就不想打了(没有打下去的勇气),再加上前面时间耗费比较多,打了个表就放弃了。
赛后预估:100+60+20+0=180
实际情况:100+0+20+0=120
本来T1以为能拿100分,结果和同学校对了几个数据,顿时心凉了……似乎公式打错了QAQ……结果成绩单一发下来了,T1全A了。。。不知道是数据太水还是我把答案记错了。。。T2的出题人似乎吸取了昨天的教训,把各种水法都卡了一遍“你是那个打了300+行的吗”“是啊,怎么了?”“恭喜你,这道题爆零”(转述)
讲评ing~
T1数学公式不解释
T2二分图匹配。(似乎和bzoj1191差不多)可以用最大流算法dinic来写。已经想到了只要满足战力不同就是一个合法的解,那么就可以先把战力离散化一下,假设第i个点的两个战力离散化之后是a,b,那么就连(i,a)(i,b)两条边,这个图的最大匹配就是答案。但是,还有一种神奇的方法:如果二分图中有一个点的度为1,那么可以直接把它匹配掉。于是,我们用一种类似拓扑排序的方法来决定匹配的顺序。最后拓扑排序完了之后,剩下的点的度都为2(因为每个人最多只能有2个战力),然后就直接算答案就行了。(似乎是这样的)这道题有各种几十行到300行的水法,不过似乎都被卡了……我的当然也被卡了。有位同学似乎在讲题时发明了最大流算法(%%%)。
T3听czl说50分线性筛,50分杜教筛(虽然两个我都不会),不过反正有个莫比乌斯反演。。。QAQ我不会……有一些人拿了70,我也看不懂他怎么搞的。(数学渣)
T4暴力是把每一个房间的四面看成一个个点,然后用链表来处理,而正解要用spaly维护链表(鬼知道他怎么维护的)
回酒店的时候看到了郭老师,问了问分数线。我竟然水到了1=分数线,踩线拿1=。出人意料。。。这两天RP真好。。。
===========================这还是一道分割线===========================
这次GDKOI,总分180+120=300分,压线初中组1=。这个成绩虽然还不错,但是还有不足。Day1的解压密码是"zha xi de le~"这是藏语中吉祥如意的意思,而Day2的密码是"with-no-regret"“不留遗憾”。从这次比赛中,我暴露了自身的一些问题(比如思想江(误)化,乱搞能力严重不足),也听说了一些我闻所未闻的东西(比如杜教筛),学到了一些解题的技巧,有一些收获。
这次来本来想看看能不能搞个大新闻(结果搞了一个小新闻)。4月就要GDOI了,感觉自己还要调整自己江(又误)化的思想,多做几道题,努力在GDOI里再搞个新闻。(听TJM说:“如果HR去了,400肯定没问题”“你们太小看HR了”%%%HR)
总之,这次比赛,虽有不足,但无缺憾。立足当下,面向未来。(一个高大上的结尾)
END