【随笔】2015年ICPC四省赛/邀请赛小结

    因为槽点太多了,所以周日比完赛,周一就开始写文章吐槽了QAQ

    这比赛真坑,真坑,真坑啊!!!(重要的事情要说三遍)

    本次比赛是ICPC主办的东北赛,哈工大跟吉大可能是因为有了CCPC所以不来参加了吧,参赛的阵容略水,强校很少,所以我们也把此次比赛当做夺金的一大机会。之前两周除了去北京参加蓝桥杯决赛那三天,其它时候都保证了每天一场练习。

    本次比赛是由大连海事大学承办,东北大学协办。话说这是我第一次去大连,心情还是很激动的~6月6号早晨六点多到达大连火车站,在车站KFC解决了一下早餐后就立即去老虎滩海洋公园happy了~这里养了好多的海豚、海豹、海狮,还见到了企鹅,看了两个表演,挺有意思的。不过主要还是能感受一下海边的氛围,清凉的海风吹得那叫一个心旷神怡~

    从公园出来已经12点多,赶紧往海事大学赶。到学校以后一半人直接去参加开幕式,一半人去开宾馆房间。我是去开房的那一半,所以并没有看到开幕式。。。等我们过去的时候, 已经马上就要开始热身赛了,于是先打热身赛。

    拿到题扫了一眼,F是猜数人品题,E是奇葩猜答案,都先放着等最后再搞。

    A题是一个很水的暴力,枚举时间,对每个时间跑一遍O(N)查询此时在宾馆的人数,维护一个最大人数即可,复杂度T*1000*N=10^7,注意一下端点的处理,敲完1A。

    然后ts看了C题,貌似是欧拉函数直接搞,他们不一会就过了,我也没仔细看。

    接着我跟鑫哥敲B题,也是个水题,给出密文让还原回原文,按照他给出的解密方法直接写就行。坑点是原文必须是01串,还有要利用密文的最后一位验证合法性。敲完WA,debug发现之前写残了,第二位漏判了是否0或1,改过之后返回YES。

    然后他们俩做D题,跟C题看着有点像,不一会他们就过了,我也不知道咋过的=。=

    现在可以愉快的玩一玩E和F了,于是我推E他俩搞F。F没啥好说的,爆爆就过了,答案好像是7。E题给了个01串,长度是90,不是8的倍数没法翻译ASCII码。然后就试着9个数一行,发现1的排列很有规律,如果把最后一列删掉,剩余的就正好是十个大写字母的ASCII码:ACMERACMER,然而交了WA。然后就开始乱交,这时隔壁杨晟雨学长交了一个ACMER过了。。。这答案好狗啊,直接出长度45的串不就好了。然后我们两队就全AK了,测了测java什么的就提前撤了~

    话说他们KILLBILL另外两位都在宾馆打百度之星来着,热身赛就只来了晟雨学长,然而他一个人AK的比我们三个人都快,不愧是大神。。。

    由于我们提前AK了,而海事大学5:30才能开饭,我们只能回宾馆歇了一小时,之后回去吃晚餐。不得不说学校提供的自助餐真的好良心啊,各种点心各种菜,大满足~~~饭后他们都回宾馆了,我去找初中老同学恺哥聊天O(∩_∩)O转了一圈校园,参观了一下实验室,就回宾馆休息了,感谢恺哥的热情招待~

    看来热身赛的AK就是一个FLAG。。。

    7号上午九点准时开始正赛。拿到题目我们从两头看,我看A,ts看L,两线开题。ts先读完了L,说预处理一下,他们就开始敲了,然而预处理跑出来并不理想,本机跑了3s左右,估计是要T的。

    然后我读完了A题,跟鑫哥说了下题意,他提出了解法:最优解一定是只使用一种武器,所以枚举使用的武器即可。我想了想很有道理,应该是正解,于是我们很快敲完。然而此时并没有队伍过A题,还有人WA了,所以我们就等着别人过。终于等了几分钟有个队过了,于是交了一发,YES。

    这时候我们交了一发那个99%要超时的L题,果然TLE了,又没有好的想法,只能先放着了。。。

    此时发现榜上有人过E,就是求两个正整数集的交是否为空,签到题,集合有10^4,所以不能N^2的搞,但是先sort再归并一趟,或者用set / map都是可以的。于是我们用sort加一趟归并的方法搞了一发,交上去竟然WA了。。。这尼玛就是悲剧的开端啊!之后整场比赛里,鑫哥换了各种姿势去签这题,各种方法都用了还是WA,set改成long long竟然还T了,我也是醉。。。之后他们商量好像是觉得如果一个集合里有重复元素就直接输出No,然而并没有什么卵用。。。最后,在4个多小时的时候,我跟鑫哥说把第一发改成long long,竟然YES了!然而赛后问别人还有int过long long却WA的,真是坑,过都不知道是怎么过的!!!

    可能你会好奇为啥一个签到题会拖这么长时间才过,那是因为——服务器爆炸了啊!从我们过A题以后,服务器返判题结果就巨慢,感觉一次提交要等半小时才返结果!等他返结果的时候我们都早已去开其他题了,根本不记得上一发错在哪里,于是debug浪费了大量时间,其它题也是这样,结果就是前四小时只过了两道题!!!

    E题挂着的时候我们开了H,题也很水,就是一个模拟,看懂题就能过的那种。题目唯一没说清楚的就是按完最后一个键power归零算不算没有完成游戏。鑫哥觉得不算我觉得算,就先按照不算交了一发,等了好久好久返回WA,这时候我们都忘了这个坑点了,换人重新debug了一遍,用了很久重新找到了坑,改了交,又过了好久好久才返回YES。

    我们弄H的时候ts看完了B,发现也是水题。问题的关键是对Rank定义的理解,其实就是一个排列在全排列中的字典序。而对于长度为N的排列,它的Rank可以在O(N^2)的时间内求出。于是分别求出排列X和排列Y的Rank,相减得到答案。第一发交上去,等了好久好久返回WA,我debug也没看出来,最后是ts发现减法取模时候有问题,他俩改过交了第二发,等了好久好久终于YES。

    其实压力最大的时候就要属四小时的时候了,这时只过了A和H两题,B、E、L全都烂在手上,心情那叫一个焦虑啊,加上坑爹的判题速度,就想冲上去打裁判了,给人急死啊!!!这时候突然宣布比赛延长半小时。好像是后面有一排中间断了两次电,他们好可怜。。。。

    还好这时候鑫哥当机立断开新题,ts先看了J题,最小生成树,敲完1A。我看了G题,跟鑫哥说完题目后他想到了预处理的解法,敲完也1A。这两题过的还是很痛快的~

    现在就剩L题还在耗着了,看了看榜其它题也没什么队过,于是一起搞L。按说这题查询次数很多,10^5次查询,应该往预处理上想,然而我当时却跑偏了,一直想推出一个公式,最后不幸失败了。而O(n*√n)的预处理对于n=5*10^6的规模复杂度太高,反正就是各种TLE。。。然而看看榜,好多队都过了啊,于是越来越不淡定,最后10分钟的时候突然想到交表可能可以过,然而时间实在不够了,刚把表打出来就倒计时了。。。最后遗憾的没有过掉L题,6题结束。

    赛后问老哥怎么做L,其实就是一个思路类似素数筛的预处理,从1到n枚举因子,对每个因子只需把它的倍数位置加上它,预处理完后就能得到每个f(i)的值,再扫一遍预处理数组就能得到Σf(i)的值了。好水啊!!!空余恨。。。

    由于这次是把四省赛和全国邀请赛合起来办了,所以发了两个奖。这次真是大手笔,137个队发了25个一等,然而那是因为7题及以上总共有25个,好伤心啊T^T

    不过可喜可贺的是学长们的KILLBILL顶住压力,八题夺冠,发自内心的祝贺他们!这次拿了邀请赛和四省赛两个冠军杯,真是好nice啊~

    回顾一下这场比赛,只能用一个“乱”字来形容,无论是断电,还是龟速判题,还是榜坏了好几个小时,简直是雪崩啊。不过别人面临的情况也很糟,我们拿到这个结果还是说明在应对特殊情况这方面比别人差很多。。。话说比赛机会越来越少了,今年也就剩一次省赛和两次区域赛了,要把握好机会,暑假多练习,为区域赛做好准备,争取拿到一个好的结果吧!

点赞