2025.4.25 NOI 模拟赛 题解
T1 NFLS #P12476. 食物链
题意
给定一张 \(\text{DAG}\),令初始时入度为 \(0\) 的点的集合为 \(S\),出度为 \(0\) 的点的集合为 \(T\),\(q\) 次询问每次给出 \(k\) 个点删除,求删除后从 \(S\) 中点出发到 \(T\) 中点结束的路径数量,\(n\le2\times10^3,\sum k\le2\times10^6,k\le15,m\le2\times10^4\)
分析
新建点 \(s\) 和 \(t\),\(s\) 向所有 \(S\) 中点连边,\(T\) 中所有点向 \(t\) 连边,则每次需要求出 \(s\) 到 \(t\) 的路径数量
每次询问相当于有若干个点不能经过,求 \(s\) 到 \(t\) 的路径数量
预处理点对两两间路径数量,容易 \(O(nm)\) 实现
每次询问给出的 \(k\) 个点按拓扑序排序,转化为一个常见的 \(dp\) 模型,容易 \(O(k)\) 求出 \(s\) 到 \(t\) 的方案数
时间复杂度 \(O(nm+\sum k^2)\)
NFLS #P13043. 直径
题意
给定一棵 \(n+1\) 点的树,按照某一 \(\text{bfs}\) 的顺序为 \(n\) 条边的边权依次设为 \(a_{1\sim n}\),求直径的最大值,\(n\le150\)
分析
先考虑链的情况
令链上点 \(i\) 上额外挂的子树中的总点数为 \(c_i\)
令 \(dp_{i,j,k}\) 表示 \(i\sim j\) 上,已经放置了 \(a_{1\sim k}\),\(i\) 到 \(j\) 的距离的最大值
边界条件为 \(dp_{i,i,0}\gets 0\)
若向左扩展,转移为
向右同理
若 \(a_{k+1}\) 不放在链上,则转移为
对于树的情况,枚举两端转化为链,时间复杂度 \(O(n^5)\) 可过,只取直径进行上述计算可过
记录两个端点下一步扩展的方向,可以做到确定性 \(O(n^3)\)
T3 NFLS #18085. 环形分割
比赛结果
\(100+70+50\),\(\text{rk}29\) \(\;\;\rightarrow\;\;\) \(100+70+0\),\(\text{rk}39\)

浙公网安备 33010602011771号