2025.3.20 NOI 模拟赛 题解
T1 抓娃娃 P11923 [PA 2025] 砖块收集 / Zbieranie klocków
题意
一个 \(n\times m\) 的 \(0/1\) 矩阵初始 \(k\) 个位置 \((x_i,y_i)\;(1\le i\le k)\) 为 \(1\),其余为 \(0\),\(q\) 次操作每次翻转一个位置,对于所有操作前和每次操作后,求出矩阵的权值,其中矩阵的权值为每次把一个上下同时为 \(0\) 或左右同时为 \(0\) 的 \(1\) 设为 \(0\) 最多能改变的 \(1\) 的数量,\(n,m\le2\times10^5,k,q\le75000\)
分析
若 \(1\) 在 \(2\times 2\) 的格子中则无法改变,若两个 \(2\times 2\) 的格子之间有阶梯状链,则链上的也无法改变
\(2\times 2\) 的格子中的位置单独维护,称为关键点,不在其中的位置称为非关键点
非关键点中组成的左上到右下和左下到右上的链一定没有交,因此分开维护
每条链开一个 \(\text {ODT}\),则转化为维护两端有关键点的非关键点连续段总长
时间复杂度 \(O((k+q)\log (k+q))\),注意常数
T2 最大子段和 QOJ # 10183. 멋진 구간
题意
给定 \(a_{1\sim n},b_{1\sim n}\),满足 \(a_i\le b_i\),求有多少个非空区间 \([l,r]\),使得存在 \(t_{1\sim i}\;(a_i\le t_i\le b_i)\) 使得 \([l,r]\) 为 \(t\) 的最大非空子段和,\(n\le250000\)
分析
显然 \([l,r]\) 内取 \(b_i\),\([1,l)\) 和 \((r,n]\) 内取 \(a_i\) 最优
区间 \([l,r]\) 合法当且仅当满足以下条件:
- \(a_{1\sim l-1}\) 的任意后缀和 \(\le 0\)
- \(a_{r+1\sim n}\) 的任意前缀和 \(\le 0\)
- \(b_{l\sim r}\) 的任意真前缀和 \(\ge 0\)
- \(b_{l\sim r}\) 的任意真后缀和 \(\ge 0\)
- \(a_{1\sim l-1}\) 内的最大子段和 \(\le\sum_{i=l}^r b_i\)
- \(a_{r+1\sim n}\) 内的最大子段和 \(\le\sum_{i=l}^r b_i\)
根据前两个条件可删除一部分左端点和一部分右端点
根据 \(3,4\) 可以得到保留下的左端点对应右端点取值范围 和 保留的右端点对应左端点取值范围
令 \(smb\) 为 \(b\) 的前缀和数组,令 \(lp_i\) 表示 \(a_{1\sim i}\) 内的最大子段和,则条件 \(5\) 等价于 \(lp_{l-1}\le smb_r-smb_{l-1}\),显然对于一个 \(l\),对应 \(r\) 的取值范围不连续,难以处理
发现对于 \(smb_r<\max_{i=l}^r smb_i\) 的情况已经被条件 \(4\) 包括了,因此限制可以弱化为 \(lp_{l-1}+smb_{l-1}\le max_{i=l}^r smb_i\),此时合法的 \(r\) 为一个区间
转化为给定平面上若干条竖直或水平的线段,若干次查询一个矩阵中交点的数量
离线后扫描线即可
时间复杂度 \(O(n\log n)\)

浙公网安备 33010602011771号