2025.12.23 NOI 模拟赛 题解

比赛

订正

T1 P130204 [省选二十连测第七套 ] --T1--R2T1 \(\quad\) P6235 [eJOI 2019] 矩形染色

题意

一个 \(m\times n\) 的矩形,每条广义对角线(左上到右下,左下到右上各 \(n+m-1\) 条)都有代价,求能覆盖整个矩形的最小代价总和,\(m,n\le2\times10^5\)

分析

对于每个点 \((x,y)\),等价于要求一条左上到右下和一条左下到右上之中至少选择一条,转化为最小割可以做到 \(O(nm\sqrt{n+m})\)

发现 \(x+y\) 为奇数和为偶数情况独立,分别考虑

对于每一种情况,都是左部点连向右部点的一个区间,每个左部点和右部点都可以匹配若干次

区间按右端点升序排序,依次枚举,贪心地匹配

用线段树或 std::set 维护可以做到 \(O((n+m)\log(n+m))\),用并查集可以做到 \(O((n+m)\alpha(n+m))\)

MX

luogu

T2 P130205 [省选二十连测第七套 ] --T2--R2T2 \(\quad\) P10759 [BalticOI 2024] Jobs

题意

给定一棵树,每个结点有权值 \(x\),初始值为 \(s\),对树 \(\text{bfs}\),每 \(\text{bfs}\) 到一个新点则加上其权值,需要保持权值非负,求能加上的权值总和的最大值,\(n\le 2\times10^5\)

分析

考虑 \(\text{dsu}\)

保存若干二元组 \((b,v)\),表示若目前值 \(\ge b\) 则可加上 \(v\)

对于一个结点,先合并其所有儿子的二元组,然后考虑加入当前结点

若权值 \(w_u\ge 0\) 则直接插入 \((0,w_u)\)

否则取出 \(b\) 最小的 \((b,v)\),令其变为 \((b-w_u,v+w_u)\)

变化后可能 \(v<0\),则不断取出剩余部分中 \(b\) 最小的与之合并,显然它并上 \((b_2,v_2)\) 的结果为 \((\max(b,b_2-v),v+v_2)\)

\(v\ge 0\) 之后(若并上所有二元组后仍然 \(v<0\) 则清空当前点的集合),不断尝试向后合并直到 \(b\) 最小

统计答案是简单的

使用可并堆可以做到 \(O(n\log n)\)

MX

luogu

T3 P130206 [省选二十连测第七套 ] --T3--R2T3 \(\quad\) P7856 「EZEC-9」模糊众数

题意

给定 \(a_{1\sim n}\)\(q\) 次询问,定义一次操作为选择一个 \(a_i\) 加一,每次给定 \(x\),判断使 \(x\) 成为 \(a\) 的众数之一所需最小操作次数,\(n,q\le10^5,1\le a_i\le10^9\)

分析

先考虑对于一个 \(x\) 如何求解

先枚举众数出现次数 \(c\)

\(s_i\) 表示 \(a\)\(i\) 的出现次数

\(1\)\(V\) 枚举值 \(v\),若 \(s_v>c\) 则将其中 \(s_v-c\) 个移到下一层

最后取出 \([1,x]\) 中最后 \(c\) 个移到 \(x\),若不足 \(c\) 个则无解

用权值线段树维护 \(s\),容易 \(O(\log V)\) 求出一个 \((x,c)\) 对应的答案,实际上用到的值都是 \(c=1\) 时用到值的子集,显然数量不超过 \(n\),因此通过一定方式离散化后可以将单次查询做到 \(O(\log n)\)

对于一个 \(c\) 修改次数(\([1,x]\) 内移动 \(c\) 个贡献容易统计,只需要修改 \(s_v>c\) 的移动,求出答案后还原)显然为 \(O(\frac nc)\) 的,其复杂度为 \(O(\frac nc\log n)\)

由此容易容易 \(O(\sum_c \frac nc\log n)=O(n\log^2 n)\) 求出一个 \(x\) 的答案

对于一个 \(x\),令 \(f(c)\) 表示 \((x,c)\) 的答案,可证 \(f\) 是凸的(可能有一个后缀为 \(+\infty\)

由此可以整体二分,做到 \(O(n\log^2 n+m\log n)\),空间复杂度线性

MX

luogu

比赛结果

\(40+11+25\)\(\text{rk}9\)

posted @ 2025-12-27 06:55  Hstry  阅读(13)  评论(0)    收藏  举报