2017 ACM区域赛(南宁站) 参赛流水账
day0:
早上四点起床赶飞机,还好没有吵醒室友导致被打死。本来想在飞机上准备一下下周的小测,结果飞机一点都不平稳,只能全程和队友吹逼聊天。下午在宾馆里和johann通关了一部合金弹头,重温了童年的经典。晚上补了补前一天晚上的CF educationnal round的E题和F题,然后被彪爷拉去开黑打牛客网的一个比赛,一看比赛都已经开始2小时了,不过彪爷实力稳如狗,我写了个D题,他写了ABCE,最后rank 9,要是早点参加就可以骗到奖金了QAQ. 打完比赛逛逛B站发现fgo出了一个剧场版动画,于是补了一波,感觉还不错。
day1(热身赛):
热身赛的题目还算有趣,johann前一天晚上可能德州扑克打多了,手比较抖,D题WA了2发,之后我写了个C题的二分,reku写了个A题的变种floyd,把时间都留给johann写大模拟题B题。 题目描述很多歧义,坑点巨多,问clarification也不给解释,只能枚举题意。好长一段时间没有什么队伍愿意写,只有港科大(还是港中文)的一个队交了十多发也没过。后来陆续过了一些队伍,不过我们队因为一些小细节写错到最后结束也没过掉。不知道南大StayReal怎么一发就过了这道题 。 学校提供的伙食不怎么好吃,晚上大家纷纷跑路去宾馆点外卖。 晚上atcoder有个奇怪的比赛,我们队准备做一做,一打开发现只有2道题,一道1000分,一道1500,感觉可能一道题也做不出来。第一题讨论了半个小时,想到了一个N^3做法,可能可以继续优化,但是肚子太饿,于是集体跑路吃外卖看番去了。 之后reku给我安利了一些哲♂学的视频 之后三人决定一起看非诚勿扰,因为据说赛前看非诚勿扰就能拿金牌(似乎是真的)。 大概折腾到十点半就睡觉了。
day2(正赛):
早上起来头有点晕,可能是因为感冒了。比赛开始前几分钟题目就发下来了,竟然没有装在信封里,大家纷纷开始看起了题。只有我们队还在排队上厕所(后来机智的跑到二楼去上厕所)。比赛开始,我发现A题题目80%都是废话,其实是个无脑签到题。写好之后还检查了一下,结果发现已经有几十个队伍0分钟就过了。 之后队友上来过了个F,我发现M题是个偏序集求最长反链的经典题,写到一半,队友说L题是个数列题,查了下数列表找到了递推公式(赛后听说是pell方程),不过要高精度,我过了M题之后,换reku上来写java,也很顺利的AC了。reku写java的时候,我和johann大致搞出了J题的做法,分类讨论了几种情况,最后三个人合力讨论讨论把解法搞出来了,也是1A。 刷了下榜,发现彪爷他们队在rank1,我们队在rank3,感到非常意外。 之后johann上机写I题的博弈(实际是暴力),我看了下榜发现H题有个排名不怎么靠前的队伍过了,看了下题发现是个简单模拟题,于是把johann赶下来写H。写完之后发现过不了样例,才发现看错题了,换回johann写I题。我和reku在边上重读了题,然后提出可以把做法修改成用vector每次保存alive grid的位置。johann写好I之后提交TLE,我提出搜索的时候不要每次把矩阵让参数传递到下一层,而是回溯的时候把矩阵旋转回来,修改后极限数据只要0.5s便能跑出来,感觉稳了,提交后AC。接着我上去修改了H的做法,很快也AC了。 这时E题也有两三个队过了,看复旦的wood cube大概在比赛开始四十多分钟的时候就拿了这题的一血,感觉不会是个很复杂的题。johann给出了一个贪心的策略,感觉是对的,我上机写了个DP,通过了样例,提交后WA,以为是算法错了。好在johann很快发现我的一个变量用了int定义,而题目给出的范围是2^63, 我修改错误后,把double 全部换成了long double后提交AC。
前期总的来说还是非常顺的,过了八个题之后时间才过了2个小时多一点,刷了下榜发现我们队和一队排名都在前五。本来以为还能再搞出一个题的,结果后面的题难度确实有些大,敝队实力还是略欠,最后2个小时决定合力搞一搞字符串题,讨论出一个看起来是正确的但是及其难写的做法,果然没写出来。赛后发现做法其实是有问题的,复杂度没法保证。最后排名rank 9,金牌是保住了(多看非诚勿扰),但有一种前期操作猛如虎,后期三个二百五的感觉。
总结:
敝队每次比赛的排名,大多取决于前期题签到的速度和罚时,面对难题往往束手无策。平时的训练可能应该更加注重于专题的训练和较难题的补题。 今年的比赛打完后,也要保持一定程度的个人训练,尤其是在难题方面。