sc2017新初三膜你赛5 比赛总结

(终于不是 rank3 了,掉到了 rank4,被新初二的同学超过了 TAT)
这次比赛,让我清晰看到了自己的差距。rank1 的 Ghastlcon 连 A 两题,T3 也拿到了 50,总分 250 比 rank2 的 Monad 高了将近 100 分,而 Monad 又比我高了将近 30 分。纵观全场,基本上 T1 都是 10 分(估计全输出了 -1。除了 Ghastlcon 大佬),T2 都是暴力 60(除了 Ghastlcon 和 Monad),所以决定排名的基本上就看 T3。然而我 T3 的分数奇低,单题得分全场 rank7,却又靠 T2 多水了 20 分,骗到了 rank4,不然的话只剩 rank7 了,真是玄学。

分析这三道试题,其实没有特别难的,但是很考思维和灵活应用。
T1 是 NOIp 原题,赛后 cdc 一评讲,就觉得并不是那么困难。需要探索题目中的规律,才能一步步发现问题的本质,从而想到正解,这个我做得不好。
T2 显然是数据结构题,然而我思维僵化,一直以来做题都是根据“下标”来维护,从未想过可以基于“值”来建立和维护数据结构。
T3 主要是要能够发现答案的单调性,突破了这个关键,其他部分并不难。配合简单的 bfs,简单的最大流,就可以过了。

所以,还是自己思维不够开放?
不过,说实话,我能隐约感觉到,一路做了几套测试下来,坚持独立思考,已经让自己的思维得到一定的提升,虽然效果不能快速显现出来,但不必操之过急。

比赛一开始,看完三道题,我第一想法就是先做 T2。裸裸的数据结构题!
但当我看到数据范围时却愣住了。原先想到的线段树做法会 MLE,立马否定了。 105 的下标范围, 231 的编码范围,让我一时间不知所措。
虽然很快就想到了离散化,但是却发现离散化之后也不知道应该怎么做。线段树已经不可行了。联想到了最近学的 Treap?
但是想了一下,一棵 Treap 里如果基于下标进行维护,那么跟线段树差不多,统计的时候还是会很慢。如果基于编号进行维护,每个结点里怎么表示出现该编号的区间呢?难不成再套一棵小 Treap?好像没有这种操作。(嗯,其实是有的,不过感觉外面的一棵拆成很多棵会更好些)
看到数字范围很大,莫名想到了 hash。说明自己不能正确认识算法的特点和适用范围,本题用离散化完全可以达到 hash 的效果。套个 hash 完全多此一举。

比赛的时候还是感觉用 hash 没有什么问题,交了之后第一个点都没过。这就很尴尬了。
然后突然发现用 scanf 读了 char,想起来这样做好像有时候会爆炸。于是把整份代码改成 C++ 的输入输出。再交,第一个点还是没过。
到这里第一反应居然是自己读错题目了。回去看,好像没读错啊?这题意难道还不够显然?
为了验证是否真的理解题目,赶紧拍了个暴力先交了,反正后面还可以对拍用。这次就过了第一个点。

感觉十分玄学,怀疑自己 hash 漏判了什么情况。写对拍。
然后果然发现了一个问题,对于重复的修改操作,统计的时候会算两次。加了个时间戳判了一下,交上去过了第一个点。
考虑到我的 hash 做法十分玄学,想看看大概能拿多少分,就构造了几个类型的特殊数据,有的能跑过,但极限数据还是 T 了。于是估计 70 分左右。

到这里比赛开始 1h 左右,如果后面都能按照这个速度的话,最后应该也能上 150。但比赛时候越到后面往往会更紧张,发挥也就不是自己能控制的了。

看 T1 和 T3,觉得都是网络流(不知道 T1 怎么想的,学什么就看什么像什么肯定不行,要会正确分析题目,想的方向是正确的才有可能搞出正解)
T1 觉得情况比较多,比较复杂,而看着 T3 又以为是最小费用最大流。思考了一下,出超纲题,不科学啊,
突然发现“允许多台汽车同时进入某个可通行格子”是个很重要的条件。也就意味着可以各走各的,不用管过程中可能出现的碰撞问题?

可以先以各汽车为起点,跑 bfs。 这样就可以得到各汽车到各停车场的距离。
但是下一步怎么做?我想到了最近学的二分图匹配,但是这题跟平常做的那些完全不一样啊,并不是要求一个最大匹配,而是最小用时。边权会是距离吗?
想了很久想不通,脑子一片混乱。一直没有意识到答案的单调性,只能乱贪心。最后交上去,剩下的时间很紧迫了。T1 连个暴力都还没打。

T1 连 30% 的暴力都不知道怎么打,而且意识到数据范围比较大,不太可能是网络流。但也只能死马当活马医了。只写了判断了 -1 的情况,和根据每个人的意愿连边,跑一个最大流,直接输出。虽然知道肯定是错的,还是得交。本来是让自己永远不要放弃机会。结果到头来还是跟 puts("-1"); 没什么区别。

总的来看这次比赛,该拿的分都没拿到。退一步讲,即使是“骗”分的能力也还不够,这个状态是没有办法应对 GDOI 系列赛事的。
T3 的玄学贪心,别人平均都可以水到四五十分(虽然正解也很好写),而自己只拿了三十几分。
不过,骗分终究只是权宜之计。还是要踏实地学习,做题的时候保持独立思考,一点一点提高自己的思维能力。
集训剩下的时间也不多了,希望自己好好利用,掌握和巩固好所学的东西,在写笔记的过程中吸收到每一题、每种算法、数据结构的精髓,争取进步。

你可能感兴趣的:(比赛总结,SMOJ)