2025.12.27 NOI 模拟赛 题解
T1 P130216 [省选二十连测第八套 ] --T1--进 \(\quad\) QOJ #10426. Managing Cluster
题意
给定一棵 \(2n\) 点的树,\(1\sim n\) 每个数作为点权 \(a\) 出现恰好两次,每次操作可以选择两个还没有交换过的点交换,最大化两端点点权相同的边的数量并构造方案,\(n\le10^5\),多测 \(T\le 3333,\sum n\le2\times10^5\)
分析
显然答案的上限为树的最大匹配,以下构造证明可以达到上界
令 \(v_0/v_1\) 表示点权 \(v\) 第一次、第二次出现的位置
求出任意一组最大匹配 \(M=\{(u,v)\}\),对于任意 \((u,v)\in M\),若 \(a_u=a_v\) 则跳过,否则两者之间连边
在 \(v_0\) 和 \(v_1\) 视为同一点的情况下,显然图有若干环和链(忽略孤点)
对于一条链,假定形如 \(a_0,a_1-b_0,b_1-c_0,c_1-\cdots-x_0,x_1-y_0,y_1\),则可交换 \((a_0,y_0),(a_1,x_1),(b_0,x_0),\cdots\),显然被交换点不重且每条边两端点权相同
对于一个环,假定形如 \(a_0,a_1-b_0,b_1-c_0,c_1-\cdots-x_0,x_1-y_0,y_1-a_0,a_1\),则可交换 \((a_0,y_0),(a_1,x_1),(b_0,x_0),\cdots\),显然被交换点不重且每条边两端点权相同
显然交换后达到最大匹配数
时间复杂度 \(O(\sum n)\)
T2 P130217 [省选二十连测第八套 ] --T2--克 \(\quad\) CF1580E Railway Construction
题意
给定一张简单无向图,一次操作可以增加一条长度不为 \(0\) 的有向边,代价为边起点的权值,要求从 \(1\) 到所有点都存在至少两条除起点终点外点边都不交的路径,若干次操作单点增加点权,所有操作前和每次操作后求满足要求的最小代价,\(n\le 2\times10^5,m\le3\times10^5,q\le2\times10^5\),多测 \(T\le100,\sum n\le3\times10^5,\sum m\le5\times10^5,\sum q\le3\times10^5\)
分析
可证满足题目要求当且仅当在最短路 \(\text{DAG}\) 上去掉非从 \(1\) 出发的所有重边后除 \(1\) 外每个点入度 \(>1\)
因此求出最短路 \(\text{DAG}\),按 \(\text{dis}(1,x)\) 重排列点后,对于每个入度为 \(1\) 的点 \(u\),设指向它的点为 \(v\),若 \(v=1\) 则在 \(\text{dis}\) 小于 \(u\) 的点中选点权最小的,若 \(v\ne 1\) 则选择除了 \(v\) 之外点权最小的
逆序考虑操作,转化为每次单点减小权值
在此过程中用线段树或 \(\text{ODT}\) 维护前缀最小值、次小值,贡献容易统计
总时间复杂度 \(O((n+m)\log m+(n+q)\log n)\)
T3 P130218 [省选二十连测第八套 ] --T3--吃 \(\quad\) AT_wtf22_day2_d Cat Jumps
题意
给定 \(a_{1\sim n}\),序列 \(b\) 含有 \(a_{1\sim n}\) 和 \(\sum_i a_i\) 个 \(-1\),对于每个 \(1\le k\le n\),求 \(b\) 本质不同的排列数满足有 \(k\) 个位置前缀和为 \(0\),\(n,a_i\le5000\)
分析
假定 \(a\) 有标号,则最终答案需要除以 \(\sum_v (\sum_i [a_i=v])!\),这是容易处理的
令 \(g_k\) 表示钦定 \(k\) 个前缀和为 \(0\) 的位置的方案数,设原本要求的方案数为 \(f_x\),则
二项式反演得
转化为求出 \(g_x\),等价于将 \(a_{1\sim n}\) 划分为非空的 \(x\) 组,对于划分出的一组设数量为 \(c\) 总和为 \(s\) 则贡献系数为 \((s+c)^{\underline{c}}\)
改变组合意义,建立一张完全图,\(u\to v\) 的边权为 \(a_v+[v\le u]\),则转化为将点集划分为 \(x\) 个非空子集,每个点连向同一子集中一个点,一组划分的贡献为所有边权之积,求所有可能的划分和连边方案的贡献之和
显然最终连出的为若干内向基环树森林,定义递增链为基环树的环上上一条有向链满足点权递增(包含挂在上面树的部分),令 \(dp_{s,i}\) 表示将 \(a_{1\sim s}\) 划分为 \(i\) 条无标号的递增链的总贡献,则
其中 \(a_i+1\) 表示新开一条链第一个点连向自己的边权,\(\sum_{k=1}^n a_k+i-j\) 表示接在链尾或接在某一条链的树部分下(可以是还没有加入的点)的系数之和
设 \(g^\ast_x\) 表示恰好形成 \(x\) 棵基环树的贡献,\(h_x\) 表示钦定形成至少 \(x\) 棵基环树的贡献(一种划分出树的方案可能对应多种划分为链的方案),则
其中 \(s(i,x)\) 为第一类斯特林数表示将 \(i\) 个元素排列为 \(x\) 个互不区分的环的贡献
而
二项式反演得
令 \(g_x\) 表示将这些基环树组合为 \(x\) 块,每块有标号的贡献,则
其中 \(S(i,x)\) 为第二类斯特林数表示将 \(i\) 个元素划分为 \(x\) 个无标号集合的方案数
总时间复杂度 \(O(n^2)\)
比赛结果
\(29+0+30\),\(\text{rk}7\)

浙公网安备 33010602011771号