【CSP-S2019模拟】10.30比赛总结
最高的估分,最低的实际得分Orz,我太菜了
比赛思路
- T1(idioms):刚开始想到记忆化搜索(即爆搜),但是发现如果有环的话并不知道怎么算,然后只好变成增广,即每一次找到一个没有入度的点去扩展(拓扑)。然而最后会剩下几个处理不了的环。发现最小值的已经可以暴力取出来了。就把它从小到大暴力变成没有入度的点。用了一个堆。有至少一年半没有打过堆了,调完之后已经过去了两个小时。
- T2(traffic):暴力?最短路(BFS)?暴力枚举每一个节点作为起点,因为n<=6000,所以要想n2的做法。那就让BFS每一点只遍历一次就好了。发现连边的性质,用链表(伪)以及并查集(伪)维护一下每一个点两边遍历过的情况。然后就能保证不重复遍历点了。
- T3(generator):数据结构裸题,但是做完T2后只剩下10min了,只能打模拟。
赛后消化
- T1捆绑下RE了三个点只剩下10分???
- T2WA0了???
- T1实际上手打堆的时候如果删掉末尾的节点,我也把它up了。。。
- T1实际上由于是BFS所以不用考虑堆,如果一个f[x][0](求最小)被遍历过的话,就把它加进队列就好了,当前肯定是最小的。
- T2前面的点贪心算肯定是有问题的。把这个部分也加入BFS里就好了(我的思路问题不大,但是打法好像是假的????)。
- T3CDQ+线段树(树状数组)模板题。
总结
- 手打堆注意末尾节点的特判。
- 细节不行呀。
- 图论还是太菜了。
- 一定要拍,不拍见祖先,不要过于依赖大数据,那个太垃圾了。