HNOI2003 BZOJ1218 雷射炸彈

2021-08-20 03:37:44 字數 732 閱讀 4025

problem

給出n個點,每個點有乙個價值,問乙個邊長為r的正方形最大能覆蓋多大價值。

solution

維護二維字首和即可,複雜度o(n^2)

注意**容易被卡:

mle:空間太大,只能比5000大一點。以及字首和開成乙個,不要用兩個陣列。

re:空間太小,,不要開5001這樣,,x++,y++後會卡點

codes

#include

#include

using

namespace

std;

const

int maxn = 5010;

int n, m, r, c, a[maxn][maxn];

int main()

for(int i = 1; i <= r; i++)

for(int j = 1; j <= c; j++)

a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+a[i][j];

int ans = 0;

for(int i = m; i <= r; i++)

for(int j = m; j <= c; j++)

ans = max(ans, a[i][j]-a[i-m][j]-a[i][j-m]+a[i-m][j-m]);

cout

<'\n';

return

0;}

bzoj 1218 HNOI2003 雷射炸彈

description 在長為5001的正方形矩陣中,有n個特殊的點,有相應的值。現在用乙個與x,y軸平行的長為r的正方形矩陣套點 不含邊緣 使裡面的特殊點的總值最大。input 輸入檔案的第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示位置與值。output 輸出檔案僅有乙個正整...

bzoj1218 HNOI2003 雷射炸彈

題目傳送門 看到十秒果斷想到暴力,結果一維字首和優化tle了,只好去 了一發二維字首和。花了幾分鐘看了一下,發現其實就是個簡單的容斥原理。以矩陣的右下角作為描述點,預處理出所有的矩陣f i j 表示從 1,1 到 i,j 所有值的和。那麼如圖所示 要求的部分就是紅色部分。設紅色部分右下角的座標為 n...

BZOJ 1218(HNOI2003) 雷射炸彈

一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖上有n n 10000 個目標,用整數xi,yi 0 xi,yi 5000 表示目標在地圖上的位置,每個目標都有乙個價值0第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示xi,yi,vi 僅有乙個正整數,表示一...