poj2352 樹狀陣列 線段樹嘗試失敗

2021-06-23 01:48:49 字數 787 閱讀 8122

啊啊啊,剛學線段樹,用線段樹寫這題不斷的tle!我自己弄了15000個資料,秒算的,結果還是說我tle,搞了2個小時沒看出**能超時—  —。

然後用之前學的樹狀。十分鐘就搞定了,兩種**都先放這裡,線段樹那個以後再拿出來看看**tle

/********樹狀陣列解法*************/
#include#includeusing namespace std;

int c[35000],sum[15010];

int getsum(int i) //查詢0到i區間的數值狀況

return s;

}void update(int i,int value)//更新0到i區間的數值狀況

}int main()

;star * build(int l , int r )

return root;

}void insert(int c, int d , star *root )

}int count(star *root,int c,int d)

} }int main()

{ int n,i,j,x,y,s;

star *root;

scanf("%d",&n);

root=build(0,32100);

for(i=0;i

POJ 2352 樹狀陣列(線段樹)

題意 給出n個點的座標 n 15000 座標範圍為 1,32000 最後讓你輸出ans i 表示有ans i 個點左下方有i個點。一開始直接寫的二維樹狀陣列,記錄乙個矩陣,如果 x,y 有點就是1,沒有點就是0,那麼我們可以輕易求出 1,1 到 x,y 共有多少點,不過這樣就爆了10倍記憶體。1k ...

Poj2352 樹狀陣列或線段樹

確定星星的等級 就是他左下方星星的數目 又因為星星本來就是從左下到右上輸出的。所以直接搞就好。其實就是輸入乙個數 求之前小於等於這個數的數量x 然後a x 然後統計a x include include include include const int maxn 35002 const int n...

poj 2352 樹狀陣列

這道題好像被賤做了,看起來像二維的樹狀陣列,其實只是一維的,可能是資料太大了,矩陣開不那麼大,因為題意是求乙個矩陣中做它左下部分的個數,而去輸入的順序是按y公升序,後x公升序輸入。其實如果不按這個順序可以下排序。然後就是一維的樹狀陣列的思路了。轉個圖,可以知道它的這陣列性質了 include inc...