WC2016酱油记

这次WC2016真有趣啊!

第一课堂讲的东西普遍偏难,很难保持跟上思路,于是就当了解来学了。

picks的多项式,太深奥了,接触到了一些奇葩复杂度的算法。正统的有FFT,NTT,不过不好的是取模比较麻烦。有个karatsuba算法,N^1.585的复杂度,但是是基于分治实现的,可以很方便地取模。

然后有关于正规语言与自然语言处理的课。学了一下正则表达式,然后之后的都很难听懂了,大致知道自然语言处理需要什么词向量,什么奇怪的统计原理。

还有数据压缩和熵,感觉那些数学公式好难。。大致感受了一下数据压缩的过程,然后看到他的一阶和二阶压缩和rar大法比较,发现rar大法真是太神啦。

然后还有ACM题目讲解,感觉基本没用到什么恶心的数据结构,全是一些靠猜想之类的方法。大部分还是听懂了。

还有IOI2015题目讲解,讲得略快,只听懂了部分题。杜老师在最后关头用卡常大法过了teams真是太神啦,32叉线段树好厉害!但是我想了一会发现很难想到如何用位运算很快地找出前驱后继,这样的话在节点内部好像极端情况下需要O(32)的巨大常数时间来找前驱后继?难道节点内部在开一个平衡树来维护这个长度32的01串?这样的话这个32叉线段树好像还可以支持可持久化。

然后就是day5的考试。我之前好像听说100+才能拿cu。第一题貌似爆搜+贪心+网络流三个算法拼在一起可以得60分,然后我就愉快地码了200行,想到第二题再拿40就能cu啦,我就急忙进入第二题。

然后发现第二题数据范围真够大的。。爆搜10分。。背包也只有10分什么鬼。。想不出来更优的解法啦。。然后就乱码了个暴力比较字符串加裸背包,进入第三题。

第三题交互题太恶心啦!他要维护一个运算符有不同优先级的表达式支持修改符号和数字,区间翻转,还要求在线和可持久化。其中20分优先级相同且不要求持久化,这个可以裸spaly的区间翻转、求和。还有10分优先级相同但是要可持久化,可以用分裂式treap。但是之前没做过交互题,所以这次花了40+分钟来揣摩这道题的题意和评分原理。最后觉得linux下不会对拍,并且交互题貌似没法单步调试,于是不想码那些数据结构了,乱写了个大暴力得了5分(竟然编译通过了!)。

最后一点时间由于不会在linux下对拍,于是发了差不多一个小时的神。最后T1爆零,狗牌滚粗。分数线好像是75au,50ag,20cu,我列个去谁给我说的100+才cu。。早知道是这种分数线那我T1就多检查下了。由于没有copy源程序,我揣测第一题应该是多组数据以及输入输出的问题。因为之前很少写拼盘程序,没什么经验,写出来太乱了,并且有些输入是在主函数里完成的,有些是在子程序中输入的,输出也是这样,可能在多组数据下就出问题了。以后注意写拼盘程序的经验技巧,例如统一输入输出,不同子程序之间不要共用数组之类的。

之后还要学一下linux下的一些对拍技巧。

这次考试我的机子不知道什么奇怪情况,我的guide调试时GDB给我显示有什么错误,调两下就要卡死然后自动结束调试,弄得我根本没法单步调试,以后遇到这种情况应该学习一下处理方法。

所以以后还是要见多识广。要争取做到在各种外部条件的情况下仍然能得到自己能力所及的分数。


你可能感兴趣的:(WC2016酱油记)