2026.1.10 NOI 模拟赛 题解

比赛

订正

T1 P130264 [省选二十连测第十二套 ] --T1--疏散时间

题意

\(n\)\(m\) 边的无向连通图,边有边权,有 \(k\) 个关键点,分别位于 \(a_{1\sim k}\),容量 \(s_{1\sim k}\),构造序列 \(b_{1\sim n}\),满足 \(1\le b_i\le k\),且 \(\forall 1\le x\le k,\sum_i [b_i=x]\le s_i\),最小化 \(\max_i \text{dis}(i,a_{b_i})\),保证 \(\sum s_i\ge n\)\(n\le10^5,m\le3\times01^5,k\le 17\)

分析

对于所有 \(1\le i\le n\)\(1\le j\le k\) 求出 \(\text{dis}(i,a_j)\),这部分容易做到 \(O(k(n+m)\log n)\)

二分答案,则相当于判断一张二分图是否有左部点的完美匹配,其中每个右部点可以匹配多次

考虑 \(\text{Hall}\) 定理,最大匹配等于 \(|R|-\max_{S\subseteq R}(|S|-|N(S)|)\),对于每个右部点的子集统计左部点对其连边恰好为该子集的数量,求出高维前缀和后容易统计 \(N(S)\),从而计算最大匹配

时间复杂度 \(O(k(n+m)\log n+(nk+k2^k)\log V)\)

代码

T2 P130265 [省选二十连测第十二套 ] --T2--路径求和 \(\quad\) P14487 [集训队互测 2018] 白云的旅行

T3 P130266 [省选二十连测第十二套 ] --T3--数列交换 \(\quad\) P10068 [CCO 2023] Line Town

题意

数组 \(h_{1\sim n}\),每次可以选择相邻的两个改变符号并交换,要使数组有序,求最小操作次数或判定无解,\(n\le5\times10^5\)

分析

先令奇数下标的 \(h\) 符号取反,则一次操作等价于交换相邻位置,最终序列将奇数下标取反后有序,操作数量等于下标的逆序对数

先将所有出现的绝对值离散化

考虑按绝对值从大到小填,令 \(f_{v,0/1}\) 表示目前填了 \(\ge v\) 的数(显然形成一个前缀和一个后者),前缀部分的数量为偶数 / 奇数,此情况下前缀和后缀、两者内部、两者与中间部分的逆序对数总和的最小值

转移时,枚举当前值在左侧填的数量,从而求出左侧和右侧中所需的正和负的数量,容易通过预处理计算新增的逆序对数量

总时间复杂度 \(O(n\log n)\),瓶颈在于离散化和对于每个数计算其左右绝对值小于它的数量

MX

luogu

比赛结果

\(60+20+0\)\(\text{rk}10\)

posted @ 2026-01-13 07:35  Hstry  阅读(2)  评论(0)    收藏  举报