NYOJ 116 樹狀陣列

2022-01-28 15:39:52 字數 1232 閱讀 4212

時間限制: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

樣例輸出

688

20

#include int c[1000000],n;

int lowbit(int n)

void add(int i,int delta)

}int sum(int i)

return sum;

} int main()

while(m--)

return 0;

}

//tle

#include#includeint a[1000000];

int main()

{ int num,t,i,j,k,p;

char c[6];

scanf("%d%d",&num,&t);

a[0]=0;

for(i=1;i<=num;i++)

scanf("%d",a+i);

for(i=1;i<=num;i++)

a[i]+=a[i-1];

for(i=0;i#includeint a[1000000];

int main()

{ int num,t,i,j,k,p;

char c[6];

scanf("%d%d",&num,&t);

a[0]=0;

for(i=1;i<=num;i++)

scanf("%d",a+i);

getchar();

for(i=1;i<=num;i++)

a[i]+=a[i-1];

for(i=0;i

NYOJ 116 樹狀陣列

時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將軍再詢問的時候...

NYOJ116 線段樹 樹狀陣列

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

nyoj 116 士兵殺敵(二) 樹狀陣列

時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將軍再詢問的時候...