杭州赛区小结 —— by edward_mj@eternal reality

虽然是不是正式参赛,但是总结还是要有的。

开场看了E、F、G,然后猛犸期间看了H问了一下我怎么做,然后当时猛犸告诉我的题意是错的,但是也可以做- -b,初步推断是莫比乌斯反演弄一下,应该不太好搞。

看完后知道F是set蘑菇题,G是xor的数据结构题,E是数论题。看了一个H,发现题意理解错了,就是算算区间,树状数组就可以了。

board上A,B,C都过了好多,猛犸一下子就都秒了。

稍微推了一下E,发现好像只要解一个由两个方程构成的同余方程组就可以了,然后看到范围都是1018,一乘就爆64位整数,感觉能比H快一点,上去就用Java写……然后Java快写完了,发现悲剧了,同余方程前面的系数推的时候忘了乘。但是有了系数模板就用不了……

然后有了系数以后做法有点变化,稍微思考了一下,好像就麻烦起来了。跟肚子白说了题意。然后肚子白问这个东西是素数吗?然后我又看了一下,发现M是素数。又推了一会儿,似乎推出解法……期间猛犸又把I过了,然后由于不太确定解法,先去把H很快写掉了。然后回头权衡了一下E和G,G是一个树上求第k大异或路径的题目,其实只要把从根上来的路径异或值存下来,两个点之间的路径直接xor一下就可以得到了,根本不需要求lca之类的……当时我其实已经想到了不在树上的解法了(也就是已经知道正解了),但是突然就脑残了,以为两个从根过来的异或值异或一下以后,还要弄一下lca的值。于是就不会做了。

跑去弄坑了一半的E,继续刚才的思路,又上机写回了C++,结果发现写完sample过不了,自己看看推导过程,- -b发现有一步推错了。但是已经没有多少时间了,然后就没再摸机器了。然后这时候看了一眼G,突然发现了刚才想的时候脑残的地方,一下子就会做了……但是却没有时间了,真是我了个去。

赛后我坑了一场的E题成为了全场没人过的题目……

然后比赛之后我看了K题的题意,刚看完就会做了……裸的费用流,然而这题我比赛的时候就只有肚子白看过,然后肚子白觉得条件太多了也一下子就弃坑了,估计也没有仔细想。然而实际上我觉得这是比EFG都简单的题目。

总得来说这场我坑队友坑得飞起,做了一整场的E还没坑出来。其实GK没脑残都是能一下就能过掉的。为什么会这样呢……我觉得还是太缺少讨论了。总结下来有那么几点是做得不够好的。

  1. K题只有肚子白知道题目,而且大概也没仔细想。这和上一年final差不多是同一个情况。最起码应该保证有人过但是没有秒掉的题至少两个人看过,不能就这样一个人粗略地看了一下。
  2. G题没有出纯粹是我脑残,实际上我都已经会做了……但是没有仔细在纸上画出来。导致没有看出和树这个结构根本没有关系。其实当时我只要和肚子白稍微讨论一下,就肯定会发现是哪个地方SB了。其实这题也好像只有我看过题目。
  3. E题全场就只有1个提交,而且还没有过(感觉是交错题了)。跟跟board其实还是很科学的。再就是,相比于数论,无疑我更懂的是数据结构。弃G写E完全不应该。今后在自己不那么擅长的领域,还是跟跟别人比较好。其实这题我会企图去碰的一个重要原因是很像我两三年前推过的同余方程并,结果就忘了当时怎么推的了。当然有点想抢FB大概也是一个原因。比赛里,还是先做自己熟悉的东西吧。不是说我搞不出来,重要的是不知道要花多少时间。
  4. 猛犸写了一场的题,这时候我和肚子白在遇到困难时没有很积极地讨论算法,演变成各自为战真的是很不应该。其实特别在没有题有很靠谱搞法的前提下,两个人合力攻一题多人过的才是比较正确的策略。也许彼此手上的题都差一点点,但是人SB的时候别人不点醒一下往往是会一直SB下去的。又想起上一年final回来,shi哥他们说的,每道题写之前如果不是很水,至少两个人知道算法和题目。如果没有这么做,WA了后20分钟或者花了好久写的还不清不楚的,再没人讨论基本就注定悲剧了。
  5. 猛犸赛后提到了为何我会产生E能过的错觉,其实这种错觉每个人都会犯。比如猛犸写J题的时候也会出现写一半不知道怎么写的情况。提防的方法无非是锻炼在上机前就能“看到”程序长什么样的能力。在摸机器前把每一步都想清楚,不要急。但是即使如此,产生这种感觉还是不可避免的。这也正是上面提到的,写之前要让队友知道算法的重要性。
  6. 世事大多如此,成王败寇。如果我一下子把E推对了,大家都不会喷我。悲剧的就是我推导的过程不够谨慎,每一步看起来都有理有据,结果还是有一步想当然了。但是不能就因为这次悲剧了,之后就畏首畏尾。如果下一次又推出一个自认为正确的结论,场上没人碰的,我还是会去交的。我觉得我们该做的是想办法通过合作等方式减少这种失误带来的影响,而不是全盘否定这样的决策。

其实这套题如果我今天发挥正常8题应该还是比较妥的。final前的训练和比赛无非就是三个目的。

  1. 保持手感
  2. 涨知识
  3. 磨合出对应各种情况下有效的策略

前两条都是可以自己练的,唯独第三条,是最重要也是最容易被忽略的。真心觉得最近我们训练的时候配合不多。我觉得有必要制定固定的队规,这样才能减少在脑袋发昏的时候造成的影响。这和肥羊说的要写小结并在比赛前看一遍是类似的,本质无非是对经验的总结。但我感觉凝练的若干条比零散的小结起到的作用可能更大。

能总结出错误也是一个很重要的能力,组队集训的时候我就觉得很多时候xpy的队伍总结不出自己犯的到底是什么错。虽然这次圡了,但该否定什么,不该否定什么,很多人心里好像没有数。人犯错很多时候是不可避免的,不应该被别人、前辈或者大家认为的大牛开两句玩笑,就觉得自己全盘做错了。每个人都肯定会有自己的想法,认真分析以后觉得别人的意见不合理就不要接受好了。在这里鄙视一下搞学长- -b,新人总结的时候就不要随便乱喷了,你的话很可能在他们眼里是权威。最后,奉上《激战》里的一句台词:怕,你就会输一辈子。