這是一道經典的計算幾何 + 最大子矩陣和變體題目。給定平面上 N 顆星星(座標 x, y 及亮度 1~100),以及一個固定寬高 (W, H) 的軸平行矩形窗口。窗口可平移不可旋轉,邊界上的星星不計入。目標是找到窗口位置使內部星星亮度總和最大。
n W H (1 ≤ n ≤ 10000, 1 ≤ W,H ≤ 1,000,000)x y c (0 ≤ x,y < 2^31,無重疊座標)sum[i][j] 表示 (1,1) 到 (i,j) 矩形內亮度和。w_idx, h_idx 的子矩陣。利用前綴和 O(1) 計算任意窗口亮度和:val = sum[x+w][y+h] - sum[x][y+h] - sum[x+w][y] + sum[x][y]輸入:
3 5 4
1 2 3
2 3 2
6 3 1
3 5 4
1 2 3
2 3 2
5 3 1
輸出:
5
6
第一組:窗口 (5,4) 覆蓋前兩顆星 (1,2) 和 (2,3) 亮度 3+2=5。
第二組:窗口移動覆蓋 (1,2),(2,3),(5,3) 亮度 3+2+1=6。
提示:座標範圍極大 (2^31) 必須離散化;星星數 10000 允許 O(N^2) 邊界算法在 C++ 中通過,Python 需更優化。