2025.5.9 NOI 模拟赛 题解
T1 NFLS #P5201. 比赛题目背景
题意
令 \(a_1=1,a_i=a_{i-1}+\text{maxdig}(a_{i-1})\),其中 \(\text{maxdig}(x)\) 表示十进制下 \(x\) 最大的一位数字,给定一棵 \(n\) 点的数,每个点有点权 \(a_i\in [0,9]\),定义 \(\text{dfs}\) 序为每个结点从小到大便利儿子得到的,求出有多少包含根的连通块满足将连通块内点的 \(a_i\) 按 \(\text{dfs}\) 序排列起来得到的十进制数在 \(a\) 中出现过,\(n\le500\)
分析
令 \(f_{i,j,k}\;(1\le i\le n,0\le j,k\le 9)\) 表示 \(T\times 10^{i+1}+k\;(\text{maxdig}(T)=j)\) 经过若干次 \(x\gets x+\text{maxdig}(x)\) 的变换后第一次不小于 \((T+1)\times 10^{i+1}\) 时个位的值,\(g_{i,j,k,l}\;(1\le i\le n,0\le j,k,l\le 9)\) 表示第一次不小于 \(T\times 10^{i+1}+l\times 10^i\) 时个位的值,两者容易 \(O(n\times 10^3)\) 求出
对于一组数据,先求出树的 \(\text{dfs}\) 序,以下用 \((i)\) 表示 \(\text{dfs}\) 序为 \(i\) 的点
令 \(dp_{i,j,k,l}\) 表示点 \((1)\sim (i)\) 组成最终值的第 \(j\) 位及以上的部分,这些位最大值为 \(k\),此时个位为 \(l\) 的方案数
若忽略子树 \((i)\),则转移为
否则转移为
时间复杂度 \(O(n^2\times 10^2)\)
总时间复杂度 \(O(nw^3+\sum n^2w^2)\),其中 \(w=10\)
T2 NFLS #P12665. 先人祭
题意
给定一张 \(n\) 个点的无向点仙人掌森林,存在两种操作:操作一为选出一个度数为奇数的点,删除所有以它为一端的边;操作二为新增 \(n+1\sim 2n\) 这 \(n\) 个点,对于所有 \(1\le i\le n\) 连接 \(i\) 和 \(i+n\),对于原图的 \((u,v)\) 在新图中连接 \(u+n\) 和 \(v+n\)。只能进行一次操作二,操作一无限制,求最终得到的图的边的最小值,并给出具体操作方案,\(n\le3\times10^5,m\le4.5\times10^5\)
分析
实际上剩余边数可以取到 \(0\),以下通过构造证明
先尽量操作度数为奇数的点,这一步容易 \(O(m\log n)\) 实现
显然此时需要进行一次操作二
剩余的点度数都是偶数,特判孤点,剩余每个连通块都是若干环的并,显然连通块之间独立
对于一个连通块,每个环建立一个点,若两个环有公共点则对应的点之间连边(即建立圆方树后忽略原点),得到一棵树,任意选择一点为根,考虑每次删去一个叶子
要使剩余部分仍然保持结构,设环上的点依次为 \(p_{1\sim k}\)(按照 \(\text{Tarjan}\) 弹栈的顺序依次连边,则环上的点按顺序排列,不需要额外操作),其中 \(p_1\) 连向当前环的父亲,则需要删去如下的结构(令 \(p'\) 表示点 \(p+n\)):
其中标为红色的点不能操作,要操作剩余的点以删去所有边
若 \(k\) 为奇数,则依次操作:\(p_1,p'_2,\cdots,p'_k,p_k,p'_1\)
若 \(k\) 为偶数,则依次操作:\(p_1,p'_2,\cdots,p_k,p'_k,p'_1\)
然后考虑根,即只有一个环的情况,此时需要删去如下结构:
构造方式类似
总时间复杂度 \(O(m\log m)\)
T3 NFLS #18277. 码农的生活
比赛结果
\(10+10+42\),\(\text{rk}44\)

浙公网安备 33010602011771号