2021年ICPC澳门站总结

  莫名其妙拿了个铜,做梦都没想过能拿奖,本来就冲着优秀奖去的,纯属是运气好了。只做了三个签到题,C题计算几何我们仨从来没练过,E题好像是分治FFT(还没补,刚写完作业),全靠手速,充分发挥了我们队的特色,签到贼快,后期摆烂。
 rank76,60个牌,比完听志愿者说前边有20个打星队,混进了前60。说实话,以我们队的实力,尤其是我本人,真没有铜牌的实力,打铁的实力倒是有,只能说运气选手。这么说来网络赛发挥失误导致排名靠后所以才会选择打校内强队都不选的赛站反而成为了幸运的事。
  woc,我管他呢,反正能保研加分,这样保研的概率又增大了,德不配位就德不配位叭,faceless就faceless叭,能拿到本校保研名额就算成功。
  文笔不好,写得很像流水账。(自信点,去掉很像)
  书接上回,热身赛结束匆匆回了机房,还剩个10分钟,连单词没来得及背,调了调设备就开始了。赛前3秒想起来热身赛的代码还没删,抓紧删了。
  开局看了看,感觉都没有能做的题,看了看E好像是正常孩子做的题。kx开局拿到纸质版就一直看A,我看榜也是A率先有人过,kx跟我说了题意和想法,我觉得可行,遂让队友敲(当时想着队友想出来的让他敲,也有点胆小鬼不敢担责)。看得出我们的专业第一同学有点紧张,敲麻烦了,我在旁边给他指点了一下怎么敲比较快。顺便验证了一下想法的正确性。没啥问题,直接冲,23分钟拿到优秀奖。
 之后看榜,有个K题过的挺多。遂读K,在n个点m条边的无向图中找一个边权和最小的简单环,输出环中所有边的编号。特殊在于边i对应的边权是2^i。能用前边的边就不用后边的边,我当时想到了这点,二进制的特性。kx也想到了这点,提出可以用最小生成树,如果某一次连接的两个点在一棵树上,说明可以造环,就找到了。但是不知道怎么记录答案,我和dy商讨了一下,可以在找到环的时候不连那条边,而是求最短路,最短路就代表了那个环,再添上那条边,就OK了。之后我和dy又再看F,因为F过的多。在经过一番检查后,1h的时候过了这个题。kx还是稳,要是我敲保不齐会wa一发,我平常做题就不是很仔细,莽夫。
  看F。F是给定n个点的无向图,每个点i有对应的点权ai。当ai>=n-1,可以将i的点权平分给其他n-1个点,即a[i] -= n-1,a[j] ++(j != i).我将其称之为分裂,如果有点可以分裂,就必须选择分裂,直到所有点都不能分裂为止。题目还非常贴心的选择分裂点的顺序与最后的结果无关。输出最后n个点的点权,或者判断永不终止。
 我和dy想了一会,dy提出可以通过sum 与 n*(n-2)+1的关系判断是否永不终止,就是所有点都是n-2,然后有一个孩子变成n-1,他的分裂会导致其他孩子也能分裂,从而永不终止。我觉得有道理。dy还提出了不会有二分裂,就是把所有点按从大到小排序后,每个点只分裂一次,这个结论不对,但是我当时也没多自主考虑,就认为他对了,因为他当时用的是所有点权集中到一个点的特例猜的这个结论。那么分裂完所有其他点++怎么处理呢,kx提出可以用线段树,我开始觉得没必要,可以前缀和+变量维护,但是有点麻烦。5e5开线段树维护区间和,时间开了2s,肯定够用。之后我和dy看了会E,感觉有点难,我当时心系F题,没有用心想。我这好久没敲线段树了,虽然会敲但是比较慢,kx已经连A两题了,还是让kx来敲,kx上去呼呼敲了出来,然后wa了,大伙开始反思。
 kx找到一个特例,n = 5,7 6 3 0 0,7 6 2 0 0,他不满足dy说的结论,但是也是永不终止。但是dy说的确实没问题,那个属于充分条件。我看到这个样例,这时提出一个猜想,不管谁分裂,只要总共分裂n-1次,就会永不终止。因为分裂了n-1次,剩下那个没分裂的点就算初始是0,也肯定到n-1了,他也能分裂。赛后知道是对的。我当时想的特例,如果n-1个点各分裂一次,最后一个点再分裂,相当于没变,又回到最初的起点,肯定可以。但是如果一个点分裂多次,而总次数也达到了n-1次,会永不终止么,我当时没想明白这个点,有点晕了。但是莽夫,想到结论就认定了,管他怎么证明。这时我发现kx的线段树写的有点逆天,懒标记不为0的时候直接return,不小心写反了属于是。我觉得改过这个函数,直接再冲就完了,思路对就肯定对了,代码仔仔细细的检查了一遍。然后又wa了,这时三人都冷静下来了,开始仔细思考漏洞。
 这时我也冷静下来了,不能再莽夫了,毕竟是比赛,不是我平常摆烂。我看了看代码,发现kx在分裂n-1次上的计数有问题,跟我们讨论的有出入,应该是次数而不是分裂的不同的点的个数,我给他改过来了。然后哩,我发现每个点有可能分裂两次的,就是第一轮迭代完又>n-1了,取模之后接近n-1,其他点分裂一下就行。我又拿几个样例试了试,发现最多两轮,即使一个点在多次迭代中分裂,如果能分裂的点很多,但是那时候总分裂次数都>=n-1了,已经可以判断出来永不终止了;如果能分裂的点很少,那这个点第二轮迭代完就很难第三轮迭代还能分裂了。但是稳妥起见,我设置了三轮迭代,而且也没用dy那个充分条件剪枝。我很难去证明这个结论,但是我感觉没问题,做错题的时候往往也觉得没问题。就直接冲了,然后a了。现在想想还有点后怕,没剪枝,乱猜的结论就过了。要是猜错了可能就和奖牌失之交臂了。好在结局是好的,结尾写写反思和改正的措施。(其实现在我还不会证明分裂次数>=n-1就永不终止,只能说是个莽夫,还没头脑)
  之后就是坐牢时间了。过的多的C计算几何,仨人练的计算几何数量不超过10。E更是看不出来是啥题,倒是往矩阵快速幂->向量快速幂乱想了会,dy还说会不会是FFT,就是知道Tag我们也不会推式子,推出来式子也未必会敲,平常都没练过指望比赛现学现卖,那得天赋异禀啊。最后有点摆大烂了,2个半小时,想哪个题都没思路。。。大写的寄,只能看着大伙的排名跑到我们前边。最后还剩30分钟,看了看D题是个构造,给你spfa代码,要你构造一个简单图卡他。n<=100,但是要求spfa算法里节点出队k超过10^5次。当时都没脑子了,就试试这个吧,别的想出来时间都来不及了。kx提出网格图猜想,k = 32,大写的寄。最后就坐牢到比赛结束了,确实做不出来,也没啥遗憾的。直到志愿者上来说我们拿奖了,我直接震惊。剧情回到了开头,不再赘述,反正是运气太好了。

 说说反思。
 ①缺少迎难而上的勇气,去年考过多项式了,赛前学了一下午就摆了,虽然确实难,但是畏难永远不能变强,这次运气好下次就不一定运气好了。算法学习上缺少迎难而上的勇气,保研、科研论文方面也会缺乏,包括找女朋友(别骂了>﹏<)。当然,罗马不是一天建成的,但也不是摆烂就能建成的,人总得成长。
 ②遇事不够冷静,不够稳。比如kx交的第一发,我从头到尾帮他检查了,因为那个懒标记是检查完在newcoder网上现场编辑的,我就没仔细检查,还有cnt统计,就导致多wa了一发,白白地wa一发属于是。还有dy说的不会二分裂,我当时就该有自己的主见,而不是大脑嗡嗡,很容易找到反例的,又多wa一发。再一个就是最后莽夫冲的时候,忘了加上dy的充分条件剪枝,幸好是冲过了,如果没冲过就会怀疑这个能过题的想法,进而耽误时间,最后寄。万幸结局是好的,遇事稳得住,才能走得远。
  感觉最近运气太好了,省赛选拔也是最后一名选上的,kx最后5分钟过了一个题力挽狂澜。满招损,谦受益。可不能自大狂啊,谦虚,但也要自信。去年天梯赛只拿到了国三,也是不够勇敢去尝试L3的题。今年天梯赛只要拿到国二大概率就保研了,希望这次可以战胜懦弱的自己吧。拿不到也无妨,人总要接收不完美的自己。但是如果不尽力去做,我会很遗憾的。尽力冲就完事了,莽夫!
 最后,感谢主办方和出题方,感谢两位队友,以及志愿者好兄弟们,感谢教练老师,thanks for everything!

你可能感兴趣的:(反思,c++)