[ABC228F] Stamp Game

Solution

有显然一点,对于 \(h2>h1\) 它的贡献与 \(h2=h1\) 是相同的,因此对于 \(h2>h1\) 我们令 \(h2\gets h1\)。对于 \(w2\)\(w1\) 同理。如此我们使得 \(h2\le h1,w2\le w1\)

现在我们设

\[A_{i,j} = \sum_{x=i-h1+1}^i \sum_{y=j-w1+1}^j a_{i,j}\\ B_{i,j} = \sum_{x=i-h2+1}^i \sum_{y=j-w2+1}^j a_{i,j}\\ \]

分别表示小 A 选择的矩形右下角为 \((i,j)\) 的数的和,小 B 选择的矩形右下角为 \((i,j)\) 的数的和。两数组据可以用二维前缀和快速求得。

那么答案为

\[\max_{1\le i\le n,1\le j\le m} \{ A_{i,j}-\max_{\substack{i-h1+1\le x\le i\\j-w1+1\le y\le j}} \{ B_{x,y}\}\}\\ \]

考虑优化求 \(\max_\limits{i-h1+1\le x\le i,j-w1+1\le y\le j} \{ B_{x,y}\}\) 的过程。

容易发现这是一个二维滑动窗口,用单调队列解即可。

Code

posted @ 2023-10-30 22:34  ASnown  阅读(31)  评论(0)    收藏  举报