梦熊:北京十二中集训 2026年8月5日 NOIP模拟赛题解
前言
我真无语了:T1写的正解,大样例都过了。T2~3写的暴力。自造数据也过了。然后给我挂了90分。神了
T1
T2
考虑从颜色入手。
那么答案为,对于每个颜色\(i\),路径中有颜色\(i\)的路径的个数。
考虑容斥原理。那么答案为 总路径量-没有经过这个颜色的路径量。
我们可以考虑对于每个颜色。将这个颜色的边删除,然后同一个连通块里的点,互相构成的路径就不经过该颜色。
考虑如何计算连通块。
我们观察一个树(子树)。
我们观察一个颜色为\(i\)的。设边连接的两个点中,深度较大的为\(u\)。
为了方便,我们下面将一个点的颜色定义为这个点往上走(往根走)的第一个边的的颜色。
首先,\(u\)网上肯定不能属于这个连通块。
然后我们往下\(bfs\),不能经过该颜色。
考虑优化。
很容易发现,这个bfs计算的联通块大小,等于
\(size[u]-\sum_{v \in S}size[i] (S={x|x的颜色与u的颜色相同,且从x到只经过一次这个颜色的边})\)
然后这个题目就做完了。
\(O(n)\)复杂度。
不过我图省事,用了不少STL容器,所以写了个\(O(nlog_2n)的\)

浙公网安备 33010602011771号