第一次参加区域赛之旅——2016 ACM/ICPC 大连站 感想

来源:互联网 发布:腾讯大王卡扫号软件 编辑:程序博客网 时间:2024/04/30 04:45

一 . 来的路上


    说到行程简直是一把鼻涕一把泪。学校不报销卧铺,只能坐硬座,而且没有直达车,所以还要在北京转车。30多个小时啊~~

二 . 旅游


    说实话,对于我们三个弱鸡来说对于这次比赛,我们是抱着旅游的心情去的。于是我们提前到了一天,在大连读书的高中同学的建议下去了星海公园和星海广场。虽然我已经见过海了,但是队友都是第一次看海。所以大家还是都十分兴奋的。一直玩到下午,原本准备去动植物园去看老虎和熊猫,然后走到门口发现了了星海湾大桥(PS:其实是一直想找这座大桥然后没找到才准备去的动植物园)。这个大桥横跨在海上的,长达七公里。在上面可以直接看到一望无际的大海。桥上面风很大,简直被吹成了傻逼。基本上一个多小时我们走完了。之后就回宾馆里,总体说来大连是一个比较美的城市。


三 . 热身赛


    之前就听说过区域赛是用的Linux系统,而且是提交文件而不是代码。所以我和队友都很尴尬,因为以前都只是在win系统而且习惯的是提交代码,都不知道区域赛的套路。
    当天下午,领导讲完话,原本是2点开始的热身赛。结果主办方服务器出问题,一直拖拖拖了十几分钟才开始发题目。一共五道题,我们主要是去摸清编译器怎么玩,所以也没有那么激动的就看题目。过了一会儿准备直接跟榜,然后发现B题过的人最多。然后队友就开始看题目,题目很容易懂,给N个点,然后用一个R边长的正方形最多套多少个点。我当时就直接说这不是暴力一发就直接过了么。然后就以每个点在正方形在四个角上然后暴力O(n)判断。然后算了一下复杂度O(n^2)能过然后就提交了。哈哈,不会用PC^2,提交也不知道对没对,反正当时就多了一条提交记录。然后状态一直是NEW,过了几分钟还是NEW。然后心情就有点糟了,也不知道是怎么回事,提交错了?还是没判下来。队友吴说代码判下来会弹窗,不用管。但是感觉很怪,以前做题基本都是提交上去就秒判。最多排队也就等个一分钟左右。然后正准备看A题的时候,B题判下来了,WA。果然没那么简单,然后突然想到点不一定在顶点上,可能在相邻两个边上。然后就记录所有X,Y然后组合构成的所有点组成顶点。当时脑子热也没算复杂度,就直接提交了。出了TLE才发现代码是O(N^3)的,然后我和俩队友思路基本和正解走偏了。最后热身赛结束这个题目还是没有弄出来。顿时感觉明天只有打铁了。晚上回去听群里的dalao说热身赛都是原题,然后果断搜了下B题的题解。对x坐标排序预处理,然后对于每个x统计x~x+r的所有点然后对y排序。然后就是一个增量统计更新最大值了。看懂了思路就好做了。果断几分钟敲完,hdu提交1a。诶,这都没想到,的确也是我们练得太少。想想明天的比赛,前途一片黑暗。


四 . 正式赛


    比赛当前很早就起来了,然后退了房就往比赛场地赶。提前了一个小时到了比赛场地,原本说准备来个合影,感觉大家都没有心情,还是比赛完了再说吧。
    进场后,志愿者过来发了题目袋,在座位上没发现PC^2的登录账号密码,以为就是在题目袋里面。比赛开始后,然后队友顺丰,吴就开始在读题目,然后我就找账号密码,发现没有。然后才发现在电脑桌面有账号密码文件。登录进PC^2。发现居然有队伍已经出题了,速度真是恐怖。
     我最先看的是D题,草稿纸上化了两下感觉是可做的,最后就是一个一元二次方程求是否有解的问题。但是没仔细想。这个时候队友顺丰给了一个题,I题的题意(n个点,每个点到原点的距离均为D,将n个点分别与原点连接,可得到n条线段,现告诉你每对相邻两线段的夹角,问这n个点组成的凸包面积)然后感觉直接公式O(n)可出,14分钟1a;
     然后队友吴给了一个J题(给你n个32位整数,每个整数可以表示成4个字符,问n个整数包含多少个字符’a’).开始队友顺丰没读懂题目,然后我解释了一发。开始我想直接暴力模拟,对于每个数字分别取对应的8个字。然后判断是否为97。准备敲的时候发现可以直接用int数组存数,然后把数组头指针强转为char*指针然后统计4n个就可以了。很短两三排代码就敲完,过了样例。问了下队友顺丰可以不,然后发现他对C++这类语法并不特别熟悉。然后我想了下应该没问题,就直接提交了。过了一会儿发现RE。当时就懵逼了,一看数组大小没开小。毕竟只有两三排代码。re还是很好找了。然而并没发现有什么错误。然后就不准备找错误了,马上重新写暴力模拟。过了十几分钟,暴力出炉。过了样例直接提交。30分钟yes。
    然后一看榜,发现三题的基本都过的H(k个黑球和1个红球,俩人轮流取,取到红球游戏结束,问先手是否有优势,还是无所谓先手后手)。草稿本画了一下,然后发现直接是一个奇偶规律。两三行代码。37分钟提交1a。这个时候突然pc^2提示刚才的I题重判,第一个RE改为Yes.当时内心就艹狗了,不过想想也好至少少了20分钟罚时。
    这个时候排名到了Rank43.队友状态都比较好,然后继续看之前没看完的D题。然后给队友顺丰说了下D题意思之后,原本我的想法是对的,然后讲的时候带偏了,导致后面化简出问题。十几分钟后才发现化简错了,重新修正过后就是一个一元二次求解。不过第一次写的时候当两根相同的时候我NO了。结果送第一枚WA。不过很快就找到了错误。90分钟的时候a了。
    这个时候4题,不过排名已经调到60多了。然后队友吴给了A题题目意思,发现和学校OJ之前做过一个找同性恋的题目很像。不过这里给了一些已经确定的点。因为当时记得是用带权并查集做的,然而很久了忘了怎么做。然后我和队友就有点方了,翻了下带来的模板,发现有一道带权并查集的例子,然后就啃例子。读完了之后并不好适用在这个题目上。我就一直在想并查集权怎么更新。这个时候队友顺丰说可以直接用SPFA染色做。我觉得会超时,不过没其他好方法了。然后他开始敲,这个时候发午饭了,我就边吃边一起看代码。过了20分钟,敲好了,过了样例和几个手写的数据后直接交,发现WA。懵逼了,觉得至少是TLE应该不可能会WA。然后回去找BUG。发现是初始化的时候edge的vector没有初始化。这就相当尴尬了,加了初始化了之后提交返回yes.当时就觉得我艹,世界都清晰了。真心怕一直卡在这道题上。然后肯定就gg了。因为这道题做过类似的先入为主的就觉得应该是并查集,然而队友都不会带权并查集。所以这个题目卡了很久。最后A的时间已经是200度分钟了。rank掉到110多。
    看了下榜,然后接着的是F题目(给你一个x,要求拆成任意个不相同的正整数ai,a1+a2+…=x,问s=a1*a2*…最大为多少)。其实看A题之前队友吴给我说了下F题目,当时觉得和之前做的一个题目很像,只不过以前做的ai可以相同,那么就是贪心。我看了下x上限为10^9,感觉是找规律。然后让队友顺丰写了一个暴力算法。然后一直测了几组数据之后找到了规律。我就开始敲,中途队友顺丰说测试数据组数很大,不能直接暴力连乘。于是预处理前缀积然后套了一个逆元。过了样例之后就直接交。250分钟1a。不过这个时候已经封榜了。
    还有最后50分钟,一看题目G,我感觉树DP可做,看了下其他题目的通过人数,两个队友基本对其他题目也没有什么看题欲望了。于是就留我一个敲G题。然而最后的最后还是没能把G题出了。
    比赛结束后,榜单还没解。封榜的时候已经在铜牌尾了。然后,我们出了一个F。感觉可能会掉出铜牌区,大家心情都很紧张。最后榜开了。108进了铜牌区。大概是我们前面几个题目出题还是比较快。而且一共只有两次罚时。6题的很多,而且手慢的6题还有打铁的。果然这场真是可怕。我特意看了一下罚时,如果最后G题能出的话,能进银牌区。的确有点懊悔。不过已经知足了。反正我和队友一直处于兴奋状态。


五.返程


     好不夸张的说,返程这一路上真的很累,人基本上是在崩溃边缘了。因为要赶回去上课,所以要找车程比较短的,而且不能坐卧铺,而且转车要考虑晚点的情况。最后导致了我们回去要转4趟车,而且全是硬座。两晚上一白天,基本上是没睡好。回来还要赶着上课。


六 . 感想


     诶,说实话,原本这次比赛真的是抱着打铁的心情来的。因为,虽然已经大三了,但是实际上练算法的也就只有大一那一年。大二一年,大家心都散了,我搞了一年游戏开发,队友顺丰搞了一年网站后台开发。反正大家心思都不在acm身上吧。然后到了大三要准备区域赛的时候才从多校开始练了一个月的算法。诶,所以说其实真正水平还是停在大一的时候。多校完了之后跟顺丰讨论过是否继续训练的问题,可能是大家已经没有信心了吧。所以打了网络赛拿了名额(名额靠的申请)之后也没有训练过。反正感觉打铁是肯定了,大家也没有太多思想包袱。比赛前几天,拿了去年的两场区域赛练了下手,找回来点做题的感觉。
     所以说,这次能够拿到铜,真的已经是意外的惊喜了。不过自己也有自知之明。基本上这次比赛也是花光了所有运气,题目相对简单,思维题较多,也是对我们的胃口。反正最好的状态最好的情况也不过如此了。人生的第一次ACM区域赛能拿到牌,已经知足了。实话说:我们的收获已经远远大于我们的付出了。后面还有一场青岛退役赛,恩,随缘吧。哈哈哈哈。
     青岛回来估计也要开始准备面试了。明年三月份准备游戏开发实习生春招。

3 0
原创粉丝点击