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)\)

代码

T3 摸鱼 P11921 [PA 2025] 看护 / Opieka

posted @ 2025-03-24 19:29  Hstry  阅读(36)  评论(0)    收藏  举报