本文主要是介绍2014 ACM/ICPC 北京站 总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
刚来大学的时候就总听老师提起ACM,也总在知行看到各位大神的赛后总结,现在轮到我写了,第一次写总结,勿喷~
先说说准备的过程,10月底开始整理模板,包括做题时遇到的新的问题,并且参考一些别人的已有的板子(T_T虽然整理好久但最后基本没用。。。),APEC期间去了一次”弱校”熟悉了一下比赛的节奏以及PC^2的使用,顺便膜拜了AK的康神队伍和昂神队伍,然后我们队伍就多了”俯卧撑”这个flag.其他几天除了跟着做每天下午的比赛,也找了点SJTU的题熟悉他们的出题风格。
15号中午来到比赛场地,发现对面是北理带星某队,后面是清华和北航一队,瞬间我们就联想到了比赛时周围各种气球中间飘着一个或两个的惨不忍睹的景象。。。到了开幕式,本来以为开幕式就是领导们讲讲话,宣传宣传主办方赞助商什么的,后来发现其实是各个赞助商代表互相捧(da)场(lian),比如爱奇艺被无情的归为了小公司,IBM代表刚讲完话lenovo的代表就说大家都知道我们受够了IBM的X86服务器等等,后来北大的吴争锴捧了所有人的场。
下午热身赛,一共四道题,第一道是数出这本问题集里面的”ACM”个数,三人每人数了一遍,26个,敲完提交,WA。检查代码,发现测试LL使用了I64d,并且没有返回0,因此通过此题测出LL需要用lld,并且忘记return 0返回的是WA不是RE(后来主办方通知正赛一定会返回RE) 。修改后提交,AC。
第二道题是判断一个数的所有素因子的个数是不是素数,开始想打素数表,发现数据1e9存不下(顺便测了一下数组上限大概为1e8),后来直接判断是否为素数竟然过了。
第三道题是一个求一个有N个数的序列,P项连续和为正,Q项连续和为负,没出。
第四道题是判断一个程序是否为死循环,刚读题是我们还在考虑各种while,for,goto。。。后来看到hint提示,仅有一组测试样例,请勇敢提交。然后我们过于勇敢的直接交了样例,果断WA。后来发现T<=3。所以最多提交8次一定会有正确的解法,接下来就是看RP的时候,我们交了8次,嗯,前7次都是WA。
晚上回学校,本来挂了几道比较水的题继续保持手感,但是在车上收到通知晚上上党课,只好默默的去了逸夫。下课后赶紧回宿舍切题,顺便又找了几个平时不太常用的板子。
第二天比赛前,我们还商量着,比赛时先通读题意,然后如果看到可开的就开,或者看到一水就转一水,至少前一个半小时出一二水,后三个半小时出两个中等题,才有可能拿到牌(后来发现确实如此)。比赛开始,Irsn从A往后读,hiphone从E开始读,我从K 开始读,Irsn和我觉得A和K都可开,然后看到A已经出题,就让lrsn开A题,A题题意大概意思是是给你一些时间和速度,求瞬时速度最大值。我和hiphone确认A题题意,确认后lrsn说了他的做法,我们证明了他的正确性,觉得没问题,提交,1Y。
随后我们一起开K,题意是给你一个数列,通过每回合随机选一个数向后移动,问最小的移动回合数。看完题我的第一个想法是以前做过的一个nlogn排序的题,通过归并排序求逆序对,看了一遍样例发现想复杂了,只要求出每个数后面是否有比他小的数就可以,hiphone提出可以给每个数加一个pos记录当前位置,然后排一遍序即可得出结果。hiphone去敲了K,我和lrsn看H。
H题是给定一个N个数的集合,求异或大于M的子集的数量。暴力枚举肯定不行,dp感觉也搞不了,唯一有一点想法就是能不能按位去求结果,因为每一个数的第i位只能是1或0,那么我们可以通过1和0的个数然后计算出结果,进而与M的第i位比较,或许可以得出结果(后来看了题解发现确实是对每一位列方程然后进行高斯消元)。这时K也过了,由于是lrsn给hiphone讲H的题意,我看了下I题的图感觉应该是计算几何,或许可以开就去看I了。
I题题意是给你两个完全一样的圆环,问他们相交的面积。我一想既然是一样的圆环,那么就可以避免很多情况,然后我就从相离到重合分成了各种各样的状态。在另外两个队友看H题时我去开了I,过了样例,跟两队友商量出了两组样例,发现我们手算不出来,然后直接交了,WA。
我到旁边看打印的代码,hiphone和lrsn开了D,虽然列出了转移方程也过了样例和自己出的例子(或许方程有问题),但还是WA掉了,反正后面的时间里我们基本上是在不断的修改I和D,但是最后还是没有过。我们太弱。
dp一直是我队的弱项,虽然也在不断的切dp的题,但是还是不能流畅的解决出部分dp问题,这也导致我们跪在了D题上。计算几何还是有希望出的,但是还是在赛场上考虑不周全,以后计算几何以及数论也是需要多多练习,多向强哥学习。还有就是我队见的题不够广,很多东西不能及时联想出来,比如H的高斯消元根本没想到。还有很重要的一点就是,模拟完比赛,不管什么题一定要补,就算模拟的时候没看没想,那也要赛后都补出来。我们以前只是把模拟时开的题补完,很多好的题目就会被忽略掉(好吧实际是因为APEC期间做的一场gym,其中的J题和比赛的I题几乎一样,而且情况还比I题多,但是当时觉得太复杂就没补)。
第一次打区域赛,竟然能写出这么长的流水账(以前写800字作文都费劲),不过确实有很多感受,既然有了一年的准备时间,那就应该有更高的目标了。
明年再战!
这篇关于2014 ACM/ICPC 北京站 总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!