樹狀陣列 線段樹裸題 HDU1166 敵兵布陣

2021-08-28 16:03:26 字數 1014 閱讀 4826

這題用樹狀陣列和線段樹都能做,模板題。

題目鏈結

推薦一篇講樹狀陣列講得比較好的部落格:掌握樹狀陣列~徹底入門

樹狀陣列:(樹狀陣列查詢和修改的複雜度都是o(log n))

(注意:樹狀陣列維護的區間下標要從1開始,不能從0開始,有些題目的輸入是有0的,需要處理一下)

#include#include#include#include#include#include#include#include#include#define ll long long

#define inf 0x3f3f3f3f//1e9+6e7

#define n 50010

#define debug(x) cout<<"x: "<<(x)<0)

return ret;

}int main()

cout<<"case "《線段樹:

#include#include#include#include#include#include#include#include#include#define ll long long

#define inf 0x3f3f3f3f//1e9+6e7

#define n 50010

#define debug(x) cout<<"x: "<<(x)<>1;

build(l,m,rt<<1);

build(m+1,r,rt<<1|1);

push_up(rt);

}void update(int l,int c,int l,int r,int rt)

int m=(l+r)>>1;

if(l<=m) update(l,c,l,m,rt<<1);

else update(l,c,m+1,r,rt<<1|1);

push_up(rt);

}int query(int l,int r,int l,int r,int rt)

int main()

}return 0;

}

NYOJ116 線段樹 樹狀陣列

題目傳送門 戳一戳 注意陣列大小,一般我們用線段樹,都開四倍空間。但是這道題資料量是一百萬,四倍開不了 所以我們就不能開四倍,而要計算一下空間,避免浪費。計算方法就是 1000000 找到2的n次方剛好大於一百萬的那個數 就是2的20次方是1048576 然後再拿1048576 x 2 209715...

hdu 1166 樹狀陣列 線段樹

一道線段樹和樹狀陣列的基礎題 用樹狀陣列做 includeusing namespace std define n 50010 int size,c n int lowbit int x void modify int i,int x int sum int i return ans int mai...

hdu 1166 線段樹 樹狀陣列

剛剛做完4351的線段樹 想起當初入門的線段樹水題 於是迅速乾掉!裸裸的超標準單點更新線段樹格式 剛剛看了樹狀陣列 用來再次刷了一次這道題 下面 2012.9.24 include include include const int maxx 50000 using namespace std in...