オリジナルタイトルリンクします。https://www.acwing.com/problem/content/description/101/
辺の長さを破壊することができる新規なレーザ爆弾R Rの正方形内の全てのターゲットを。
地図上に今あるN N目標、整数西 、李西、李は、地図上の目標の位置を表し、それぞれが目標値を有するW IのWi。
レーザ爆弾は、衛星測位によってサービスが、それは、その爆発範囲という欠点を有し、すなわち、辺の長さRの正方形の辺はRとでなければならないX 、Y X、Y軸。
ターゲットが四角いブラストの端に位置している場合、ターゲットが破壊されないであろう。
爆弾を探していると、どのくらいの目標の合計値までの地図上に吹きました。
入力形式
整数入力の正の最初のラインN N及びR&LT R&LTは、正方形の側のオブジェクトの数、およびスペースで区切られた地図データを表します。
次のN N行、入力データの各セットは、データの各セットは三つの整数含むX- I 、Y Iは、WはI西、李、Wiは、ターゲットを表すX X座標、Y Y座標値データスペースで区切られています。
出力フォーマット
出力アップ表す正の整数は、マップオブジェクトの合計数の値に爆弾を爆破します。
データ範囲
0 ≤ R ≤ 1E 9 0 < N ≤ 10000、0 ≤ X I 、Y I ≤ 5000 0 ≤ W I ≤ 1000年
サンプル入力:
2 1
0 0 1
1 1 1
出力例:
1
求某点的前缀和:
S [i]は[J] = G [I-1]〜[J] + G [I] [J-1] -g [I-1] [J-1] + G [I] [J]。
二维前缀和:
赤色の領域は、着色領域のすべての部分マイナス(マルチカットに起因する)緑色のプラス黄色領域の面積であります
AC代码:
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 const int型 MAXN = 5050 ; int型のN1、R。 INT G [MAXN] [MAXN]。 INT メイン(){ CIN >> N1 >> R。 INT X、Y、W。 INT、N = R、M = R。 用(INT iは= 0 ; I <N1 I ++ ){ CIN >> X >> Y >> W。 X ++、Y ++ 。 N = MAX(X、N)。 M = MAX(Y、M)。 G [X] [Y] =ワット; } ため(INT iが= 1 ; I <= N; I ++ ){ ため(INT J = 1 ; J <= Mであり、j ++ ){ G [I] [J] = G [I- 1 ] [J] + G [I]、[J- 1 ] -g [I- 1 ] [J- 1 ] + G [I] [J]。 } } int型 ANS = 0 。 int型T; 用(INT I ++; I <= N I = R {) のための(INT J = Rあり、j <= Mであり、j ++ ){ TG = [I] [J] -g [IR]は[J] -g [I] [JR] + G [IR] [JR ]; //カウントが側である(R-1)の正方形でありますそして、無しエッジとして ANS = MAX(ANS、T); } } COUT << ANS << ENDL; }