GDKOI2018事故记录

  如题。

Day0

  吃了晚饭才出发,由于出发时间定为5:30,不得已在五点十几分就吃了晚饭。(去程腐了一车程的手机。
  七点多钟到了酒店,又是上次去noip住过的那个。由于到酒店时我还一直在腐,他们分发房卡我也没发现,凑过去时人已经寥寥可数了,于是我跟了WJQ住。
  刚进房间,WJQ就好像没住过酒店似的,东看看西看看,还口若悬河地赞不绝口。也对,他上次noip没参加提高组。
  晚上一直腐到了十一点十几分,才熄灯睡觉。

Day1

  原定6:20起床,但我晚了五分钟。一起床就感觉头晕晕沉沉的,显然是因为昨天浪到太晚了。
  去二中的车程依然留给手机。
  一下车,symbol就告知我们迟到了。我一看表——八点十几分了。但我并不知道八点钟比赛,我还有点以为他是骗我们的。
  值得一喷的是,二中大门口前面一块地,路都没铺好,上面只有一块看上去松松垮垮的木板。我说:“断了就好玩了!”L大爷还要故意吓一吓人。
  来到语音5室,看见里面座无虚席,我才知道真的迟到了。不过我并没有什么感觉。
  T1的题目描述又丑又长,看得我烦不可耐。不过我想到L大爷说的去年GDKOI“第一题是傻逼都会做的题”,我就耐心地继续看下去了。看完之后,又花了不少时间理解了样例,然后滚去看T2。
  T2是一道字符串匹配的题,感觉很可做的样子,于是滚去看T3。
  T3则是给出许多个点,每个点有三种颜色,让你计算每个点是多少对与其颜色不同的颜色相同的点对的中点。一眼看出30分的 O(n2) O ( n 2 ) 暴力,然后感觉是什么计算几何之类的我很不拿手的题,就滚去看T4了。
  T4是让你求一堆数的排列数,并且保证相邻两个数的差≤一个数。看了看数据范围,感觉特别没戏,估计是什么数学题。
  然后滚回去打T1。打完、调完以后,已经过了三个小时了。于是马上滚去看T2。
  看T2时,我戏谑地想着“只剩一个小时了,我可能调不出来”,但马上就毋庸置疑地否定了这个想法。因为在我看来,一个小时已经足够充裕切掉一道题了。
  我想了一会,觉得可以KMP,又朝着AC自动机的方向想了一会,但一下忘了AC自动机是什么,于是开打KMP起来。打了一半,才发现这样做的话,如果模式串太多会T。
  于是想到AC自动机,但又忘了怎么证它的时间复杂度。不过我可不是来证AC自动机的时间复杂度的,证不出来也开打了。
  一开始,我傻逼地把统计答案想成了统计母串中除了模式串以外其他地方的方案数,还想到了树状数组,还打完了。结果调了半天才发现错误,又傻逼地把统计答案想成了所有方案数减去匹配成功的个数,结果又调了半天。终于想到正确的思路时,只剩下10分钟了。于是我便猛改起来。不过依然很不容易,调到最后几分钟我还调不出错,于是心急如焚,简直快要忘记了怎么样思考。不过最终我还是改出来了。
  出来一讨论,T1什么鬼spfa?T2AC自动机没错,但我却突然想到我统计答案依然错了:我仅仅统计了母串中相邻的模式串两两之间的方案数,并未统计母串首到首个模式串、末个模式串到母串尾之间这两段的方案数,所以很大几率会WA,甚至还有可能爆0。
  期望得分:50+50+0+0=100
  今天下午听题,T1是spfa,不知道我那水法会WA还是会T;T2是AC自动机,也没什么好听的;T3是什么法法塔,还要把二维转成一维,听来令人望而生畏;T4就更没兴致听了,好像是什么插头DP,反正听了肯定也不懂。
  发成绩单的时候没有发到我的,我很郁闷,为此与一大群人义愤填膺地杵在好像是电脑四室等了几十分钟,最后我等来了个零分——我没开子文件夹。

Day2

  这天不比赛,听讲座,无聊程度可见一斑。
  因为不比赛,所以我昨晚十一点半才睡。早上则是六点三十多才起床。
  然后的确挺无聊的。上午讲的数论我早就知道了,就算有忘记的,看看发的那本书也就懂了,真不知道有什么可讲的;下午就更没怎么听了。

Day3

  Day3就是今天了。
  昨晚本打算早点睡觉——at about 22:30,但由于意志力不足、给自己找借口能力强大等各种原因,和Day0晚上一样,十一点十几分才睡。
  起床则是比昨天还晚了。6:30就被酒店那电话的闹钟闹醒了,但还是成功地赖了十分钟的床。下到餐厅已经没什么好吃的了,又因胃口不佳,只吃了一点。
  去二中的车程依然腐过。
  这天就没迟到了,七点四十多就到了。但是我肚子闹革命了,将近八点才跨入考场。
  我满怀壮志地坐在座位上,打算今天考个一百多分翻一波盘。
  看了看T1,怎么数据范围这么大啊,感觉是什么奇妙的算法。于是滚去看T2。
  T2是给出一个有向图,但是每一条边的边权都不确定,只知道它在一个区间里,然后让你判断某个傻逼给出的一条1到n的路径是否可能是最短路;由于还要给他一点面子,如果他的那条路径不可能是最短路,你还要输出他那条路径的前多少条边可能是某条最短路中的一部分。我读完以后,简直快要惊叹出声怎么还有这种鬼题啊。
  T3是让你用一些类型的片构成一个环,其中每连续的长度为L的一段类型不能相同。感觉是什么神奇的DP,看了一眼范围估计要套个矩阵乘法。想了一会L≤2的,但没想出个所以然。
  T4让你求用一堆颜色涂完一堆点后的方案数/(此种方案没用上的颜色+1)的和。我又想到了DP,然后胡思乱想了一会。
  思虑再三,觉得T2最好切,于是先去做T2。我发现判断贼容易:就只需把他给出的路径上的边的权设为最小值,其他边设为最大值,做一遍spfa或者dijkstra之类的就行了。关键就在于告诉那个傻逼他的那条破路径的前多少条边可能是某条最短路中的一部分了。
  这个时候,我想到了以最小值为权,连一波反边,然后从n做一遍spfa;对于那条破路径上的每个点,如果此时已经经过的路径权值和+n到此点的距离大于最短路的话,那么此时已经经过的路径就定然不属于最短路了,于是答案即为此点的上一个点。
  不过想了想,发现有点错误,因为假如有另一条经过的边权全选最大值都依然要小于此时已经经过的路径权值和的话,此点也是不可行的。
  于是我打、调了约莫一个小时,但是还是发现有个漏洞:可能当前此点并没有非法,但是去到连向它的任一点时就定然非法,那么此点也定然非法;然而我的程序会判其为合法。
  于是我又对我的程序微整形了一下,才滚回去看T1。
  我想了一下T1,觉得还是拿暴力分靠谱,于是看到有30points最多只有16个点,就打了个状压DP;又看到有30points并没有距离的限制,就立马猜到要镜面对称的匹配,试了几个例子全对,于是就打了上去。我觉得T1应该能稳拿60points,于是没有去拍,就滚去看T3。
  乱想了一会T3,发觉这题好难,于是弃掉,看下一题。
  T4我突然想到了组合数,感觉这题铁定和组合数有关。我发现数据范围足以让我们枚举一重此种方案没用上的颜色数,再去乱搞算答案。我们用总颜色数-没用上的颜色数即为用上的颜色数,也就是说,我们只要求出n种颜色必须全用、染完m个点的方案数,再拿它乘个从总颜色里面选出那些没用上的颜色的方案数即可,后者直接就是个组合数。
  我们可以设f[i][j]表示使用i种颜色且全部用上、染完j个点的方案数。那么可以推导出转移方程:

f[i][j+1]+=f[i][j]i f [ i ] [ j + 1 ] + = f [ i ] [ j ] ∗ i (继续用i种颜色里的其中一个染掉j+1这个点)


f[i+1][j+1]+=f[i][j]c[i+1][i] f [ i + 1 ] [ j + 1 ] + = f [ i ] [ j ] ∗ c [ i + 1 ] [ i ] (新开一种颜色染掉j+1这个点)

  这样的话,我们就可以在 O(nm) O ( n m ) 的时间里算出答案,估计可以拿到30points的部分分。我打完以后,调过了样例,也懒得去拍,因为此时已经十一点五十多了。
  我马上滚回去想T3,但眼看着时间不多了,根本没打算想出来。于是也没有想出来。
  期望得分:60+30+0+30=120
  今天下午听题,发现T2竟然要用什么二分,于是对自己的方法更加没信心了;而T3果然是DP+矩阵乘法;T4则是什么鬼数学题。
  发成绩时,我感觉有点凉凉。一看到成绩:50+10+0+0=60,我就瞬间无语了——T1暴力都能打错!T2就水到这么点分!!T4为什么30points不翼而飞了?!
  这个故事告诉我们:调完题后一定要拍一拍,因为样例都是很“良心”的水。
  而且,晚睡早起导致了精神欠佳,或多或少也影响了我的状态,卒致两天都不太理想。
  最后,我想感慨一下:这真是我有生以来做过的最难的一套题!(祝愿出题人身体健康

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值