NOIP2022 T3 题解

\(P8867\)

\(1\)~\(3\) 写你喜欢的暴力,枚举每条边是否被选,然后胡乱计算一下即可,复杂度\(O(2^m(n+m))\),期望得分\(15pts\)

\(4\)~\(7\) 写一个更高级的暴力(其实是\(captainOI\)看了题解啦)。枚举每个点是否造军营,再用\(O(m(n+m))\)的复杂度检查在断了每一条边之后,图是否还联通。满足条件的边有\(M\)种的话,那对\(ans\)的贡献即为\(2^M\)。复杂度\(O(2^nm(n+m))\),期望得分\(35pts\)

\(10\)~\(11\) 图为一条链,那么看最左的军营\(l\)和最右的军营\(r\)。若\(l=r\),贡献为\(2^{n-1}\),否则贡献为\(2^{r-l-1}\times2^{l-1}\times2^{n-r}=2^{n-2}\)。所以总答案为\(2^{n-1}\times n+2^{n-2} \times \frac{n(n-1)}{2}=2^{n-1}\times n+2^{n-3}\times n(n-1)\)。复杂度\(O(n)\),期望得分\(45pts\)

好开始解说。
首先我们发现,原来的图中,在边双内部的边,是否看守不重要,必须要看守的边只能为。一个大小为\(size\)边双内,有\(1\)个军营,有\(2\)个军营,……,还是有\(size\)个军营,其实本质都一样,都是这个边双有军营,要与其他边双的军营通过桥连通。所以,我们进行边双连通分量缩点,顺带求出每个边双的大小\(size\),把原图缩成一棵。先把非桥边的贡献记上,显然看不看守都可以。一个边双建军营的贡献为\(2^{size}-1\),不建的贡献为\(1\)。所以\(12\) ~ \(14\)只需要进行和正解一样的树\(dp\),不缩点,\(15\) ~ \(16\)只需要把基环树缩成树即可。所以本题的重点成功转移到了树\(dp\)上。所以:

\(8\)~\(9\) \(dp\)开始。(再说一句,我还是认为我的做法比题解好)。设\(f_{u,0/1/2}\)表示以\(u\)为根的子树内,没有军营/有军营且能走到\(u\)/有军营且走不到\(u\)的方案数。对于点\(u\)及其所有儿子\(v\),可以得出\(f_{u,0}=\prod_{v\in son_u}(f_{v,0}\times 2)\)\(f_{u,1}=2^{size_u}\times \prod_{v\in son_u}(f_{v,0}\times 2+f_{v,1})-\prod_{v\in son_u}(f_{v,0}\times 2)=2^{size_u}\times \prod_{v\in son_u}(f_{v,0}\times 2+f_{v,1})-f_{u,0}\)\(f_{u,2}=\sum_{v\in son_u}(f_{v,2}\times 2+f_{v,1})\prod_{w\in son_u \space and \space w \ne v}(f_{w,0}\times 2)\)。预处理\(2\)的次幂,复杂度\(O(n^2+m)\),期望得分\(55pts\)

\(12\)~\(20\) 事实上但凡带了脑子写题的都能想到优化。\(\prod_{w\in son_u \space and \space w \ne v}(f_{w,0}\times 2)\)可以通过\(f_{u,0}\times (f_{v,0}\times 2)^{-1}\)来做,复杂度\(O(nlogn+m)\)。可以维护\((f_{v,0}\times 2)\)的前缀和和后缀和,复杂度\(O(n+m)\),但没啥必要,还难写。期望得分\(100pts\)

小记:本题为\(captainOI\)最喜欢的\(NOIP\)题。在\(NOIP2022\) \(T2\)让人无法接收时,救人于水火之中。\(T2\)思维难度高,还有大模拟,不会做的人反而被无形帮了一把,去写这道题了。(事实上这道题\(captainOI\)是在\(Professor\)的提示下做出来的,不过不重要)。

最后来一句,相信\(NOIP\),实力到了,就一定能考出来!

posted @ 2025-08-20 19:04  captainOI  阅读(12)  评论(0)    收藏  举报