方阵游戏 题解

方阵游戏 题解

这道题的模型转化非常巧妙

通过对操作净次数的讨论,转化成递推式,并通过差分计算答案

题意

  • \(n \times n\) 方阵,初始仅 \(m\) 个非零格;每次操作选一个 \(k \times k\) 连续子方阵,整体 \(+1\) 或 \(-1\)。
  • 求最少操作次数使全矩阵变 \(0\),无解输出 \(-1\)。

核心转化:操作净次数

设 \(x_{i,j}\) 为以 \((i,j)\) 为左上角的 \(k \times k\) 操作的净值 (\(+1\) 次数减 \(-1\) 次数,可正可负可为 \(0\))。合法左上角:\(1 \le i, j \le n-k+1\)

显然:

  • 代价 :同位置的正负操作互相抵消,净值为 \(x\) 时最少恰好 \(|x|\) 次,故

    \(\text{ans} = \sum_{i,j} |x_{i,j}|\)

  • 约束 :格子 \((i,j)\) 被左上角位于 \(i-k+1,i \times j-k+1,j\) 内的操作覆盖

  • 即

    \(a_{i,j} + \sum_{p=i-k+1}^{i} \sum_{q=j-k+1}^{j} x_{p,q} = 0\)

解是唯一的

扫描到 \((i,j)\) 时 :能影响它的操作的左上角满足 \(p \le i,\ q \le j\);其中扫描顺序在 \((i,j)\) 之前的都已被定死,未确定的只剩 \(x_{i,j}\) 本身。

因此 \(x_{i,j}\) 被迫 恰好抵消 \((i,j)\) 的当前残值,没有任何自由度:

  • 整个方程组只有唯一候选解;
  • 候选解合法 \(\Rightarrow\) 它就是答案(无需比较优劣);
  • 不合法 \(\Rightarrow\) 输出 \(-1\)。

前缀和优化

设 \(S_{i,j} = \sum_{p \le i,\ q \le j} x_{p,q}\)。

\(\sum_{\text{win}} x = S_{i,j} - S_{i-k,j} - S_{i,j-k} + S_{i-k,j-k}\)

代入约束 \(a_{i,j} + \sum_{\text{win}} x = 0\),移项得 O(1) 递推:

\(S_{i,j} = -a_{i,j} + S_{i-k,j} + S_{i,j-k} - S_{i-k,j-k}\)

差分还原 & 合法性检查

递推完成后用差分还原:

\(x_{i,j} = S_{i,j} - S_{i-1,j} - S_{i,j-1} + S_{i-1,j-1}\)

逐格分类:

  • 若 \((i,j)\) 在合法区(\(i,j \le n-k+1\)):\(ans += abs(x)\);
  • 否则:若 \(x_{i,j} \ne 0\),判无解输出 \(-1\)。

由递推唯一性,该检查必要且充分。

复杂度

\(O(n^2 + m)\)

相关推荐
Tisfy7 天前
LeetCode 0453.最小操作次数使数组元素相等:两次遍历(反向思维)
算法·leetcode·题解·遍历·反向思维
孤独的Bochi7 天前
# [CSP-S 2026] 迁徙 / migrate 题解
题解
Tisfy7 天前
LeetCode 3665.统计镜子反射路径数目:三个动态规划数组
leetcode·动态规划·代理模式·题解
漂流瓶jz8 天前
UVA-1612 猜名次 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·题解·排序·aoapc·算法竞赛入门经典
lvwangshu11 天前
P15569 [COCI 2025/2026 #5] 结构 / Struktura 题解
矩阵·题解·dp·推导题·矩阵加速
lvwangshu14 天前
T3 涂鸦带师 题解
题解·贪心·倍增·技巧·思维好题·断环成链
Tisfy17 天前
LeetCode 3644.排序排列:不对则与(脑筋急转弯)
数据结构·算法·leetcode·题解·位运算
lvwangshu17 天前
P8981 「DROI」Round 1 距离 题解
动态规划·图论·题解·dp·树形dp·技巧·换根dp·性质题·思维好题
lvwangshu18 天前
P17723 [SCP-S 2026] 函数 / func 题解
题解·双指针·技巧·性质题·思维好题·推导题
Tisfy19 天前
LeetCode 3863.将一个字符串排序的最小操作次数:分类讨论(一次遍历)——简单易懂版
算法·leetcode·字符串·题解·分类讨论