2018 藍橋杯省賽 B 組模擬賽(一)天上的星星

2021-09-13 03:40:52 字數 1711 閱讀 4764

題目鏈結

在乙個星光摧殘的夜晚,蒜頭君一顆一顆的數這天上的星星。

蒜頭君給在天上巧妙的畫了乙個直角座標系,讓所有的星星都分布在第一象。天上有 nn 顆星星,他能知道每一顆星星的座標和亮度。

現在,蒜頭君問自己 qq 次,每次他問自己每個矩形區域的星星的亮度和是多少(包含邊界上的星星)。

第一行輸入乙個整數 n(1 \le n \le 50000)n(1≤n≤50000) 表示星星的數量。

接下裡 nn 行,每行輸入三個整數 x,y,w(0 \le x, y, w\le 2000)x,y,w(0≤x,y,w≤2000),表示在座標 (x,y)(x,y) 有一顆亮度為 ww 的星星。注意乙個點可能有多個星星。

接下來一行輸入乙個整數 q(1 \le q \le 50000)q(1≤q≤50000),表示查詢的次數。

接下來 qq 行,每行輸入四個整數 x_1, y_1, x_2, y_2x1​,y1​,x2​,y2​,其中 (x_1, y_1)(x1​,y1​) 表示查詢的矩形的左下角的座標,(x_2, y_2)(x2​,y2​) 表示查詢的矩形的右上角的座標,0 \le x_1 \le x_2 \le 20000≤x1​≤x2​≤2000,0 \le y_1 \le y_2 \le 20000≤y1​≤y2​≤2000。

對於每一次查詢,輸出一行乙個整數,表示查詢的矩形區域內的星星的亮度總和。

樣例輸入複製

5

5 0 6

7 9 7

8 6 13

9 7 1

3 0 19

40 8 7 9

0 0 7 10

2 7 10 9

5 4 7 5

樣例輸出複製

7328

0

設陣列mp[x][y]代表以(0,0)為矩形的左下角的座標,(x,y)矩形的右下角的座標圍成的矩陣內的星星的亮度的總和。

設陣列haxi[x][y]代表座標為(x,y)上的所有星星的亮度和(因為在乙個座標上會有多個星星)

那麼遞推關係式應該為mp[i][j]=mp[i-1][j]+mp[i][j-1]-mp[i-1][j-1]+haxi[i][j];

在詢問中,若求某個矩陣的星星亮度總和,遞推關係就該為mp[x2][y2]-(mp[x1-1][y2]+mp[x2][y1-1]-mp[x1-1][y1-1]);

有乙個小矩陣會被減去兩次,所以最後再加一次。

考慮到**的實現,把資料的座標整體+1,避免遞推式**現負數下標。

#include#include#includeusing namespace std;

typedef long long int ll;

const int maxn(2000);

const int inf(0x3f3f3f3f);

const int mod(1e9+7);

ll mp[maxn+50][maxn+50];

int haxi[maxn+50][maxn+50];

int main()

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

}int q;

scanf("%d",&q);

while(q--)

}

2018 藍橋杯省賽 B 組模擬賽(一)

給你乙個序列,請你在其中求出一段最長嚴格上公升的部分,它不一定要連續。include includeusing namespace std int f 10000 b 10000 int lis int n res max res,f i return res 1 int main printf d...

2019 藍橋杯省賽 B 組模擬賽(一)

d.結果填空 馬的管轄 e.填空 lis f.程式設計 找質數 思路 因為時間複雜度的問題,o n n 的時間複雜度可能會超時,可以選擇的篩選素數的方法有埃氏篩法o n logn 尤拉篩法,這裡選的是尤拉篩法o n 直接遍歷找兩個素數相加等於n 因為要求字典樹最小,所以不會超時 ac include...

2018 藍橋杯省賽 B 組模擬賽(一) 數列求值

對於乙個含有 n 2n 2 個元素的數列,a 0,a 1,cdots a na0 a1 a n 滿足這樣的遞迴公式 displaystyle a i frac a c i 1 le i le nai 2a i 1 ai 1 ci 1 i n 現在我們知道 a 0,a a0 an 1 和 c 1,c ...