2026.3.28 NOI 模拟赛 题解

比赛

T1 NFLS #P13152. 树

\(f_{x,y}\) 表示子树 \(x\)\(y\) 内分别去掉一个点的情况下,不考虑两者子树内的点,填 \(p\) 的方案数

\(f_{x,y}\) 可以从 \(f_{fa_x,y}\)\(f_{x,fa_y}\) 转移得到,通过一定预处理可以做到 \(O(n^2)\)

统计答案时,枚举两个结点 \(x,y\),计算 \(|x-y|\) 的贡献,即两者在 \(pos\) 中相邻的方案数,可以由 \(f\) 得到

总时间复杂度 \(O(n^2)\)

代码

参考

T2 NFLS #P13222. 最小生成森林边权和

P1117 [NOI2016] 优秀的拆分 的方式将图转化为 \(O(n\ln n)\)\((l,r,k,w)\),表示 \(\forall l\le i\le r\)\(i\)\(i+k\) 连边权 \(w\) 的边

P3295 [SCOI2016] 萌萌哒 的方式 \(\text{ST}\) 表优化建图,从上到下求出 \(\text{MST}\) 后将 \(\text{MST}\) 中边加入下一层

时间复杂度 \(O(n\log^2 n+n\alpha(n)\log n)\)

使用基排可以做到 \(O(n\alpha(n)\log n)\)

代码

T3 NFLS #P13149. 耐火

比赛结果

\(0+100+15\)\(\text{rk}19\)

posted @ 2026-03-29 09:40  Hstry  阅读(2)  评论(0)    收藏  举报