小学生日记:
2019.10.13,哈尔滨,打了个铜
开头
先说结论,这次失败,我的锅70%,sdl的锅5%,ykh25%
Day0
周五,
我们队出现了奇怪的厄运上身
首先是我中途在飞机上数据线突然出现在前面座位上,下了飞机发现数据线丢了(
然后ykh的羽绒服被刮掉了一堆毛
后来sdl比赛的时候也一直激动地拉肚子上厕所
本来我是十分反对今天去吃东北菜的,但是还是架不住饿的诱惑,吃了一盆锅包肉
Day1
哈尔滨真的是冷的一笔,我们出发去东北林业大学
学校很大很豪华,风景很美
和女队一起报道完拍了照,就去学校食堂挂机等热身赛了
我队的特色一直是ykh从a读到z,sdl从z读到a,我有代码敲代码,无代码读最短的(毕竟六级没过)
热身赛开始,我先上机敲完了头文件,ykh此时看懂了A题并告诉了我
然后一通操作过掉A题,此时rank40+
这个时候ykh和sdl都在看B,并且好像有哪一句话没有看懂,让我读一遍看看题意
我看了一遍居然直接看懂了并且脑子过了样例,跟队友讲了一遍就上机过了
此时rank大概铜首,问了下队友c题意,我直接说出了算法并且上机
这题细节有点多,我敲代码的时候出了不少问题,队友正在口胡d题
过了样例之后直接交就过了,此时大概rank仍然是40+
然后讨论了一会d题发现不可做,就开始了愉快的吹b时间
此时sdl和我争论c题的出处,我就让他上机测试java以及各种c++奇怪的东西之后自己写一下c体验一下
当然后面没写出来
另外ykh对我说:明天f题肯定是签到,你信不信
打完热身赛,我们站在东北林大门口等车的时候,我说“不知道明天这个时候我们是怎样的一种心情”,大家沉默
后来我们得出了一致结论:无论如何,铜的话太丢人了
Day2
依旧的寒冷,队友早上似乎十分紧张,一直拉肚子
我们刚开始叫的车还在来的路上被人蹭了,司机估计在和人干架,就叫我们取消了订单。。
另外正式赛赛前两分钟,sdl还在厕所里,还好在倒计时前及时回来了。。
正赛开始了,我依然是上机敲头文件,敲完之后队友还在看题
我瞟了一眼,ykh居然在看真的在看F题。。。我就去看了最短的I题,发现题意比较简单就跟ykh互相交换了一下题意,
F题直接就出了算法,我就开始敲F了
敲了一半,队友告诉我I题特变简单,随便特判一下,我就先暂停F过了I题,
然后继续F,因为很久没写状压了,敲完没过样例,叫sdl过来帮我看代码,改了一下初值,就过了
然后看了一下榜,有点懵:I和K绿了一大片,F题没绿多少,我们反向签到了
这个时候让队友赶紧去做K,ykh推了半张纸的公式,被sdl看了一下样例猜了一下公式秒掉了
继续跟榜开F题,虽然还是签到状态,但此时已经是大家一起集火这一题了
我和ykh各出了一些假算法和一些数据,sdl讲了一个我们没人听懂但是能过已知数据的做法
果断(莽)让sdl上机写自己的思路,ykh帮忙解决了许多代码问题(sdl让此处对ykh提出特别表扬),然后交上去1A
此时1h50m,我队4题均1A,但是由于过于求稳,时间比较慢,rank上是银尾
开了E题,我先把这个问题分解了子问题,然后和队友逐个讨论解决子问题的可行性并证明复杂度
发现复杂度大概O(n+k+nlogn),n,k<=1e6,通过昨天热身赛测的评测机感觉能(卡)过,就开始了不归路。。
在ykh的监督下,大概30m敲完代码,过了样例,交上去,T,1300ms/1000ms
这个时候看榜发现没有其他题可以做,果断打印代码和队友一起看
中间上厕所,发现吉老师居然在我旁边(后来每次想到这个画面都会热血澎湃)
我告诉队友,现在有几点可能性:1.复杂度分析有问题 2.代码写的不是这个复杂度
冷静分析后(后来发现并不冷静),我们认为复杂度分析没有问题,就开始一起看我的代码
我们不知道数据有没有跑完,所以先进行了一些卡常
中间经过了漫长的过程。。优化掉了3个O(n),把快读改成了出题人给的快读,交上去后,T,2200ms/1000ms
众人傻眼,这时候ykh认为我的dfs炸了,我让他讲一下为什么,他没有讲明白(我没有听明白),还反向说服了他
封榜后我们感觉nlogn也许根本就过不去?然后我们就构思O(n)的方法:最后求的是出现最多次数的数的出现次数与sum/2的关系
ykh说:求众数
我说:对啊,求众数有一种O(n)的方法,(就是bzoj2456,我和ykh之前讨论过这个问题),扩展一下搞在这个题上不就完事了
后来的事实证明,题解的O(n)算法这个时候其实我们已经出了
因为我还没想好细节,而sdl此时又出了一个我们没听懂的实现,我就让他上机了
sdl在我的代码上改了改,debug之后过了样例,交上去,T,2200ms/1000ms
众人再次傻眼,此时比赛仅剩1m,铜首
赛后大家分析了一下这两份代码,是dfs炸了,但是又没人能解释为什么,因为表面上它没有任何问题:一棵树n个节点,叶子节点上有序列,序列长度的和为k,dfs它的复杂度是 O(n+k)的
Day3
今天晚上,我们拿着比赛的代码开会分析,
分析到了这个dfs后,我让ykh再讲一下当时反驳我dfs的时候,他构造出了一个图:这根本不是一棵树
wdnmd(恍然大悟)
这其实是一个DAG,dfs的时候用dag的方式处理即可
总结
分锅过程如下:
我作为队长,前四题策略出现问题导致罚时较高,作为主代码手没有理性分析E的代码复杂度,队友提出质疑没有特别在意,占锅70%
ykh其实知道这题我们最后差的关键所在,但是队友交流上出现了少许问题,当时没有讲清楚dfs出问题的关键原因,占锅25%
sdl其实不该有锅,但是在我建出树的模型的时候其实该跟他说的,但是他又在厕所。。然后最后改我代码的时候赛后发现了一些bug,勉强占锅5%
可以看出,我队交流上出现了大问题,如果我们三个人是一个人,这题在2h30m的时候就该过了(赛后得知nlogn也可以过),所以并不是硬实力问题(?)
而是队伍训练太少,所以经过合计,我队将加大训练强度
dbq,这次让关注我们的人失望了
勉哉耘其业,以待岁晚收。
下次会继续加油的