Loading

题解:P14976 [USACO25DEC] Photoshoot B

按照题意模拟即可。

核心就是维护这个网格,每次修改之后只更新所有包含该点的 \(k\times k\) 子矩阵的元素和,并维护其最大值。

由于题目保证每次修改都是增加正整数,因此子矩阵和单调不减,最大值也只会变大,直接更新即可。

虽然说时间复杂度不是很优秀但是对于本题已经足够,时间复杂度是 \(O(q\times k^2)\)

本质上就是每次修改后局部更新,这样就保证不会炸掉。

aclink


考虑如何更优。

更优做法可将每次修改转化为对子矩阵和矩阵 \(S\) 的矩形区间加上一个全局最大值查询。按行拆分矩形更新,用线段树维护区间加与最大值,从 \(O(qk^2)\) 优化到 \(O(qk\log n)\)。如果本题的 \(k\) 在拉高一点,这个做法就相当有优势了。

但是说实话,这题 \(k \le 25\),暴力已冲过去了,线段树上来常数更大还更容易写炸,直接用暴力就够了。

aclink

posted @ 2026-01-18 14:42  MagnusSM2  阅读(40)  评论(0)    收藏  举报