2026.3.4 NOI 模拟赛 题解

T1 \(\purple\odot\) P13342 [EGOI 2025] Wind Turbines / 风力涡轮机

题意

给定一张无向带权图,每次询问给出 \(l,r\) 求出点 \(l\sim r\) 缩到一起后图的最小生成树,\(n,m\le10^5,q\le2\times10^5\)

分析

建立重构树,则等价于查询 \(\{x\mid x=\text{lca}(i,j),l\le i\le r,l\le j\le r\}\) 的点权之和

回滚莫队可以做到 \(O(q\sqrt n)\)

代码

T2 \(\textcolor{black}\odot\) P6715 [CCO 2018] Fun Palace

题意

长度为 \(n\) 的链,若 \(i\) 处有至少 \(a_i\) 个物体或 \(i+1\) 处至少有 \(b_i\) 个物体则物体可以双向穿过边(穿过边的过程中仍然需要满足数量要求),求出在点 \(1\) 物体数量永远 \(<e\) 的情况下,能放置则物体数量的最大值,\(n\le1000\)\(e,a_i,b_i\le10^4\)

分析

由于操作可逆,因此假定所有物体已经尽量向左走了,假定此时每个位置上物体数量为 \(c_{1\sim n}\),考虑向右走的操作对 \(c\) 的影响

\(f_{i,j}\) 表示 \(1\sim i\) 中有 \(j\) 个物体聚集在 \(i\) 时,可以放置的物体的最大数量,满足它们无法向左走

初始 \(f_{1,<e}=1\)\(f_{1,\ge e}=-\infty\)

\(f_{i,j}\) 转移时,枚举 \(c_{i+1}=k\)

显然 \(k\le b_i\),否则 \(>b_i\) 的部分可以走到 \(i\),不满足尽量向左走的前提

\(j<a_i\)\(k<b_i\),则两侧都无法穿过中间的边,从而 \(f_{i+1,k}\gets f_{i,j}+k\)

\(j<a_i\)\(k=b_i\),则 \(i\) 处的 \(j\) 个可以移到 \(i+1\) 处,从而 \(f_{i+1,k+j}\gets f_{i,j}+k\)

显然 \(j\ge a_i\)\(k=0\),否则 \(i+1\) 处的可以走到 \(i\),不满足前提

\(a_i\le j<a_i+b_i\),此时有 \(j-a_i\) 个可以移到 \(i+1\) 位置,转移为 \(f_{i+1,j-a_i}\gets f_{i,j}\)

\(j\ge a_i+b_i\),此时 \(i\) 处的 \(j\) 个都可以移到 \(i+1\),转移为 \(f_{i+1,j}\gets f_{i,j}\)

综上转移为

\[f_{i+1,k}\gets f_{i,j}+k\quad (j<a_i,k<b_i) \]

\[f_{i+1,b_i+j}\gets f_{i,j}+b_i\quad (j<a_i) \]

\[f_{i+1,j-a_i}\gets f_{i,j}\quad (a_i\le j<a_i+b_i) \]

\[f_{i+1,j}\gets f_{i,j}\quad (j\ge a_i+b_i) \]

显然答案上限为 \(2V\),因此时间复杂度 \(O(nV)\)

代码

参考

T3 #574. 「LibreOJ NOI Round #2」黄金矿工

比赛结果

\(100+0+16\)\(\text{rk}2\)

posted @ 2026-03-22 07:06  Hstry  阅读(1)  评论(0)    收藏  举报