這題用樹狀陣列和線段樹都能做,模板題。
題目鏈結
推薦一篇講樹狀陣列講得比較好的部落格:掌握樹狀陣列~徹底入門
樹狀陣列:(樹狀陣列查詢和修改的複雜度都是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...