時間限制:1000 ms | 記憶體限制:65535 kb
難度:5
描述南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。
小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。
南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將軍再詢問的時候,需要考慮到新增的殺敵數。
輸入只有一組測試資料
第一行是兩個整數n,m,其中n表示士兵的個數(1
輸出對於每次查詢,輸出乙個整數r表示第m號士兵到第n號士兵的總殺敵數,每組輸出佔一行
樣例輸入
5 6樣例輸出1 2 3 4 5
query 1 3
add 1 2
query 1 3
add 2 3
query 1 2
query 1 5
68820以1為開頭的線段樹要開兩倍大小。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;typedef unsigned
long
long
ull;
#define maxn 2000004
#define l 31
#define inf 1000000009
#define eps 0.00000001
/*線段樹的實現
*/struct
treenode
t[maxn];
//線段樹
int a[maxn],max;//
給出的陣列
char op[10
];void build(int beg,int end,int
root)
else
return;}
/*ll query(int root, int nbeg, int nend, int qbeg, int qend)//這個好像沒有辦法處理 一種情況!?
}void add(int i, int num, int
pos)
//cout << i << ' ' << num << ' ' << pos << ' ' << t[pos].l << ' ' << t[pos].r << endl;
int mid = (t[pos].l + t[pos].r) / 2
;
if (i <=mid)
add(i, num, pos*2
);
else
add(i, num, pos*2+1
); t[pos].val = t[pos * 2].val + t[pos * 2 + 1
].val;
}int
main()
return0;
}
士兵殺敵(二) 線段樹
描述南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將軍再詢問的時候,需要考慮到新增的殺敵數。輸入 只有一組測試資料 第一行是兩個整數n...
士兵殺敵(二)(線段樹)
士兵殺敵 二 時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將...
nyoj116 士兵殺敵(二) 線段樹)
時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將軍再詢問的時候...