HDU1541 經典樹狀陣列

2022-07-05 14:18:12 字數 899 閱讀 5438

hdu1541

題意:如圖,等級為0的點有1,等級為1得點有4,2  等級為2的點有3,等級為3的點有5-------即即左下角的點的個數

現給你一些點(x,y),輸入順序按y公升序,y相等時按x公升序排列

請分別輸出等級0---n-1的點的個數

分析:暴力超時tel,用g++提交也超時

#include#include

#include

#include

"cstring

"using

namespace

std;

int a[15005

];int c[15005

];int

main()

for(int i=0;i)

}return0;

}

再分析只統計之前小於等於x的點的個數,即可確定等級

統計個數,需用到求和,用樹狀陣列

#include "

cstdio

"#include

"cstring

"#include

"iostream

"using

namespace

std;

int c[32000+5];///

下標代表x值,值代表個數

int a[32000+5];///

下標代等級,值代表個數

int lowbit(int

x)void update(int i,int

plus)

}int getsum(int

x)

returns;}

intmain()

for(int i=0;i)

}return0;

}

HDU 1541 樹狀陣列

傳送門 hdu 1541 給定一組點,用座標表示,求各個層次的點的數量,每個點層次指的是其它點中 座標均不大於當前點 座標點的數量 注意題目給出,所有輸入對於 來說都是不降序,所以只要考慮 就可以了,y不增的時候x自增,所以後輸入的點不會影響先輸入點的層次 因為計算層次的時候要排除自身,所以要先更新...

樹狀陣列hdu1541

題意 大概就是計算每顆星星左下邊包括了多少顆星星,這個數值就是level。左下邊不包括本身,不超過本身的x,y的座標,可以等於。問每種level有多少顆星星。思路 1.每次輸入乙個座標對之後,都要計算一下這個它的level。2.此題的x座標可以為0,而樹狀陣列是從1開始的,所以處理的時候對每個x座標...

hdu1541 樹狀陣列

題意 給你n個星星 1 n 15000 和每個星星的座標x,y 0 x,y 32000 每個座標不相同,且給出的座標是按列序公升序排列,列序相同則按行序公升序排列。定義星星的等級是該星星左下角的星星個數 包括正下和正右 最後要你輸出等級從0到n的星星個數。題解因為按給出的座標的規則,前面的點一定在後...