tg 30 题解

T1

二维前缀和
场切题不讲

T2

\(40pts\) 状态压缩表示每一个子集,用邻接矩阵跑一遍\(Tarjan\),时间复杂度\(O(2^nn^2)\)
因为continue不能有效降低时间复杂度,所以上面的还真是对的
\(60pts\) 把邻接矩阵换成邻接表 时间复杂度\(O(2^nn)\)
极限状态下可以通过\(n=19\)但是来自东方的神秘常数给我卡了
当时分析\(60pts\)做法的人估计也是没想到
\(100pts\) 实际上复杂度瓶颈在于对状压枚举每个图的\(Tarjan\)
而一遍\(Tarjan\)只是用来判断\(SCC\)多少有点浪费
我们只需要知道子图是不是强连通分量而并不需要额外信息
考虑维护一个子图是否是强连通分量
考虑题面给出的竞赛图性质
我们考虑枚举每一个子图的出边
显然对于一张图,我们可以割下一个节点,形成另外一张图
而新图的出边可以由子图和这个点的边按位与得来(后面有用)
也就是说图中必须每一个点都指向图外的一个点才存在这个图向这个点的连边
然后我们考虑如何计算答案,像是一个欧拉筛
首先如果一个图没有被打标记那么它是一个强连通分量
然后我们考虑这个强连通分量的出边,这些边显然都连接着点,设点的集合为\(T\)
只考虑强连通分量和点集中的点,由于这些点没有连入强连通分量的边,因此这些点显然不能和强连通分量结合形成新的强连通分量
直接打标记就行了,复杂度是\(O(2^n)\)

T3

神仙\(DP\)
部分分讲的挺详细但是非常简略

T4

NOI2021
赛时切掉&赛后\(2min\)搞掉的大佬\(tql\)

\[\Huge\%\%\% \]

希望\(NOIP\)的时候还是赛时低错,这没办法
来自\(s\color\red{mtwy}\)奆佬的指导:
首先对于每个修改路径点,我们打个修改时间戳
然后一条边是黑色,当且仅当它的端点的修改时间戳不同
树上带修问题考虑树剖
但是我们可以轻而易举的发现它和染色这个题非常像
区间覆盖问题直接线段树
开几个标记:
区间黑边数目,区间最左/右端颜色
线段树板子就是那么个板子
然后考虑处理好信息就完事了
区间覆盖黑边数目清零,最左右颜色设成覆盖颜色
黑边数目和左区间最右和右区间最左颜色不一样的时候加一
然后就是跳到轻边顶端也要注意两个单点的颜色是不是一样的
一开始所有边都是黑边,所以建树的初值不能相同

posted @ 2022-08-16 21:24  2K22  阅读(15)  评论(0)    收藏  举报