比赛时间安排
7.50-8.00
t1看了一下发现不太懂
t2看数据范围,感觉二分答案还可行,有一定思路
t3题面太长了,看完觉得特别麻烦
t4感觉也是一道要写暴力的题目了
8.00-8.15
t1直接全排列枚举,然后判断和题目给的一不一样,然后样例一过就交了
8.15-9.15
t2刚开始写的是链式前向星,然后发现不好判断两个点是否有连边,然后就改成邻接矩阵了。
然后先把二分板子写了,剩验证答案是否正确。
先把没有连边的点存到
v
e
c
t
o
r
vector
vector里,然后每次验证的时候暴力去枚举,判断能不能合并,如果全扫一边,都不能合并,那么就不合法
写完之后其实心里是没底的,因为有个while(1)循环,怕超,但是本来就是想写个暴力,就交了
9.15-9.50
t4我直接写的暴力,感觉和之前一道题的暴力很像,写完之后样例过了,突然想到还有下发样例,然后试了一下,发现错了,发现自己没有处理有数字相同的情况,然后想了一下,处理成功就交了
9.50-10.10
把前两题的下发样例测了一下,没问题,然后自己写了个随机数,测了一下t2,发现200的数据也能过,然后500的随便跑了一个边比较少的(多的跑了10分钟出不来),飞快,我突然觉得我能a了
10.10-11.40
本着不能有题不交的原则,我把t3又好好思考了一下,然后发现这种依赖关系可以转化成拓扑,然后自己动手建了一个图,发现好像可行。然后开始码,结果写完拓扑之后发现只能求出最短时间,没法求最小内存,然后就放弃了(浪费了大把时间啊)
11.40-12.10
在最后时刻,我去看t4,推出来了,每次只需要找最小值放在左右两端就行,然后我就想到用线段树维护当前每个数的坐标是多少(因为每次把一个数放到最左边,那么就是相当于把他左边的数坐标+1,区间修改),然后我以我能码的最快的速度把这个想法写了,但是最后挂了
赛后总结反思
- 暴力分 √
- 把时间花在t3上的太多了,像这种毒瘤题,去死吧,以后不能这样
- 其实t4想法和正解很接近了,还是缺乏进一步的思考,或者说,还是时间分配不合理
- 这次考试之所以能打好原因应该能有这几点:暴力分比较好想,心态没那么崩,比赛的暴力越打越熟练,能反应过来模型(小本本有用呀!我觉得我懂二分了)
与正解的差距
t1
完全没有想到这个思路,感觉非常巧妙,自闭了
t3
因为已经有一个二分的题了,虽然看着像,但是实在不敢写,然后没想到会出个大模拟,光想着算法了
t4
正解在第一段话,讲的感觉和我的思路是一样的,然而这仅仅是思路,而正解的做法是在这个基础上简化,找到直接影响因素,省去了模拟的过程,所以深入的思考非常重要,要透过现象看本质