2025.12.21小测
P8359题
可以观察特殊性质,不难发现在特殊性质下每断一条边会产生一个新的连通块。
于是能想到维护连通块,具体为:倒序处理询问,先维护出操作完后联通情况。倒序考虑两种情况:
\((i)GC\)更新维护的\(p\)表示下一个GC的时间戳。
\((ii)\)将这次操作删掉的边加回去,如果联通到了\(1\),则\(ans\leftarrow ans+p\times siz\),我们维护一个连通块大小即可。
注意:如果图开始就不连通,在统计答案时需要额外加上\(siz\times p\),\(siz\)为不与\(1\)联通的联通快的大小,\(p\)为第一个\(GC\)的时间戳。
时间复杂度\(O(n)\)
P9166题
定义合法线段为:与\(x\)相交或与合法线段相交的线段。
显然,合法端点只可能在合法线段上。
在\(x\)左边的合法线段上的左端点合法,在\(x\)右边的合法线段上的右端点合法。
考虑差分维护出\(x\)左右两边的合法线段终止处。
在维护每个点为性质(为左端点或右端点)
时间复杂度\(O(n)\)
P10060题
考虑研究题目给到的\(f\),我们可以得到一个性质:
拥有相同\(f\)的节点在树上一个形成一个连通块。
其中连通块指拥有相同\(f\)的节点连起来形成的子树,下文将每个节点对应的\(f\)称作节点的“颜色”。
证明:假设在一棵树中,除节点\(i\)外所有节点的颜色都相同(不妨设为\(1\))\(i\)的颜色为\(2\),显然如果这棵树不符合性质,\(i\)会拥有父节点\(fa\)与子节点\(son\),且设\(i\)的颜色为\(j\),其他结点的颜色为\(k\)。
感性理解一下,如果\(i\rightarrow j 优于 i\rightarrow k\),且任意情况下\(fa\rightarrow k\)与\(son\rightarrow k\)至少有一条路径会经过\(i\),则因为任意情况下\(fa\rightarrow i\)与\(son\rightarrow i\)一定,又因为\(i\rightarrow j\)优于\(i\rightarrow k\),所以任意情况下在\(fa,son\)中至少有一个点的颜色是\(2\),与命题矛盾。
我们不妨将整棵树按颜色缩点,考虑什么方案会使题目给到的\(f\)不符合实际。
即为:有关键点\(k\),令\(i\rightarrow k\)优于\(i\rightarrow f_{i}\)。
考虑\(i\)出现的位置,得到性质2:当有不合法情况发生时,不合法节点至少包含一个边界节点(两个颜色块的交界)
证明:感性理解,当有节点不合法时,可以视作它的颜色改变了,根据性质1,此时必然存在相同颜色形成一个连通块。
所以如果有节点不不合法,那么不合法的点集中必然包含边界节点。
逆推,如果没有边界节点不合法,则这个方案是合法的。
考虑树形dp,设\(f_{col,i}\)表示在第\(x\)中颜色的连通块(子树)中,取点\(i\)作为关键点。
我们可以先将原树按颜色缩点,并同时预处理出边界节点与每个连通块点集,如果有不合法的连通块,那么这组数据就是无解的。再预处理出点对之间的距离。
下面的叙述全部基于缩点后的树。
在dp时我们可以枚举当前颜色(子树)的关键点,相邻的颜色(子树),相邻颜色(子树)的关键点,在枚举过程中判断两个交界点是否合法即可。
根据乘法原理,当前颜色(子树)的方案树就是所有相邻颜色(子树)方案数的乘积。
最后\(Ans=\sum dp_{f_{1},v}\),其中\(v\)是颜色为\(f_{1}\)的连通块中的点。
时间复杂度:\(dfs+\)枚举当前连通块关键点\(=\)遍历整棵原树,枚举相邻颜色\(+\)关键点\(=\)遍历整棵原树。
共\(O(n^{2}\))
P1129题
前言:破网络流??!!!
注意到一个性质,如果我们将初始有黑点的行数与黑点所在列数作为节点连边,那么所有操作可直接转化为移动右侧点(列数代表的点集),使得经过若干次移动后,每个左侧点都有一条边连向右侧点,因为右侧点的移动是任意的,所以我们只需要跑一遍二分图最大匹配,看匹配数是否为\(n\)即可
浙公网安备 33010602011771号