NOIP2024 T3 题解
\(1\)~\(3\) 写你喜欢的暴力,期望得分\(12pts\)。
\(18\)~\(21\) 手玩一下链和菊花,结论懒得摆了,期望得分\(28pts\)。
\(4\)~\(6\) 好我们开始详细解说。
首先如果你真的想不到题解做法的话,可以写一个换根\(dp\),过程就比较的繁琐,这里就不赘述了。
然后你发现,每个原树节点对应的所有边在新树上对应一条链,链下挂着许多棵子树。而你钦定了根关键边后,每个点的入边是确定的,唯一需要确定的是其他关键边的顺序,所以设每个点的度数为\(d_u\),那么答案为\(\prod_{u=1}^n(d_u-1)!\),好好理解一下,期望得分\(40pts\),是这题的大众分,然而\(captainOI\)并没有拿到。
\(7\)~\(10\) \(k=2\)也是比较重要的一个部分分。我们用\(k=1\)的答案乘\(2\),减去这两条边都可行的情况。显然,我们可以画出这两条边在树上构成的链。在链上的点(不算链端点),它的入点和出点都被确定(好好想想),所以减去部分为\(\prod_{u=1}^n(d_u-1)!\times \prod_{u \in S}(d_u-1)^{-1}\),其中\(S\)为链上点的集合,期望得分\(56pts\)。
\(11\)~\(12\) 考虑容斥,可以发现,能作为根的边在原树上一定构成一条链。所以枚举点集,找出链,像\(k=2\)一样计算答案即可,复杂度\(O(n2^k)\),期望得分\(64pts\)。
\(13\)~\(15\) 还是容斥,设\(f_i\)表示钦定\(i\)条关键边作为根的方案数,答案即为\(\sum_{i=1}^k(-1)^{i-1}f_i\)。枚举两条边\(l1\)和\(l2\),按\(k=2\)算出的答案为\(ans\),设\(l1\)和\(l2\)之间有\(v\)条关键边(包括\(l1\)和\(l2\))。那么\(ans\)对\(f_i\)的贡献即为\(\binom{v-2}{i-2}ans\),复杂度\(O(nk^2)\),期望得分\(76pts\)。
\(16\)~\(17\) 实现要精细,实现枚举\(l1\)算出所有\(l2\),可用换根\(dp\)实现,注意去重,复杂度\(O(nk)\),期望得分\(84pts\)。
\(22\)~\(25\) 大决战,发现其实如果\(v \ge 3\),那么这个\(ans\)对答案的总贡献为\(0\)。所以只需要用\(k=1\)的答案乘\(k\),再减掉\(l1\)和\(l2\)中间没有关键边的方案数即可,可用换根\(dp\)实现,注意去重,复杂度\(O(n+k)\),期望得分\(100pts\)。
其实换种理解方式,一种链上含\(S\)条关键边的方案,会被加上\(S\)次,再被减掉\(S-1\)次,故这样的容斥是正确的。而且如果直接想到这里,就可以愉快地切掉\(T3\),为后面的\(T4\)和前面的\(T1\)留出宝贵的时间了。
最后来一句,相信\(NOIP\),能力到了,就一定能考出来!
浙公网安备 33010602011771号