忘了提交, 直接爆0……
T1 友好城市(friend)
考场 :预期30', 得分 30'
正解 : 对于稠密图判环用Kosaraju更好(Kosaraju 是 O(|V|^2)的, 而Tarjan 是 O(|E| 的)), 如果可以快速取出一个区间内的边, 就可以处理出不是特殊情况的时候, 想到分块, 又是稠密图, 就可以用边表存, 然后 Kosaraju, 有一个优化, 用bitset存边表,可以优化常数, 而在稀疏图中(整张图是稠密图, 但是只取区间时是有可能取出一张稀疏图的, 但总的来说 此题 O(|V|^2) 还是优于 O(|E|) 的), 可以将通过__builtin_ctz() 快速地求出 bitset 的最后一位 1 的位置, 对于此题就可以bitset存记录一个当前未访问过的点集, 然后每次都用边表 & 这个点集 再 _ _builtin_ctz() 可以优化 $\frac{1}{32}$ , 但是由于此题的点也不多, 开int也不会爆, 而且 bitset 用 _ _builtin_ctz() 也要转化为 int / longlong才可用, 所以还不如直接int存
反思 : 对于 Kosaraju 和 Tarjan 的根本区别没有区分过, bitset 优化边表 也没有接触过, 知识点有漏洞, 并且看到数据也没有想过是稠密图, 处理方法可能要与稀疏图不一样, 对数据的分析不够
T2 最长路径 (path)
考场 : 预期 50', 得分 50'
正解 : 假定确定了最长的链, 那考虑任意一个点与该链上点的连边, 从链的末尾向前考虑, 可以发现 连边的方向必须是由点指向链, 否则会出现通过该点的、长于假定的链的新链, 那么就只需要确定链上的方案数, 可以dp求解
反思 : 对于一个新定义的图 或是序列之类, 大概率都有一些特定的性质, 之后再遇到, 在没有思路的情况下可以从分析性质入手
T3 异或与区间加
考场 : 预期 40', 得分 0'
正解 : 前面的还没改完, 这题还没弄……
反思 : 40'部分本可以不用主席树直接用Hash, 但是受题面影响莫名其妙写了个主席树还用了Hash, 以后不要想当然;还没调, 但大概率是查询左/右端点时另一个端点的取值范围出了锅, 思路不严谨, 细节考虑不周到