Stars HDU 1541 樹狀陣列

2022-08-19 14:00:09 字數 689 閱讀 6035

樹狀陣列是一種類似於線段樹的資料結構;

它各節點之間的移動方式基於二進位制的進製;

每個下標儲存值是下標 最低位1後面所跟0的個數的二倍的 該點之前的資料之和;

如 : 10100  存了四個元素的和,是a[10100] a[10011] a[10010] a[10001]

移動到轄域前乙個節點的方法是退位,即 x-lowbit(x): 10100 - 100 =10000; 10000儲存了a[10001]前的4*2位元素;

題目:以y公升序的x公升序輸入n個點的座標,求 滿足:左下方分別有0 , 1 ,2 ... n-1個點 的點的個數;

用樹狀陣列存對應x座標已有的點的個數,因為是按特定順序輸入的,輸入時可以直接統計:

#include #include 

using

namespace

std;

int c[32000+10

];int a[15000+10

];int lowbit( int

x)void updata( int x ,intv)}

int getsum( int

x)

return

res;

}int

main( )

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的星星個數。題解因為按給出的座標的規則,前面的點一定在後...