NYOJ 108 士兵殺敵(一)(線段樹)

2021-08-06 03:10:09 字數 1252 閱讀 7206

link:點我點我

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3 描述

南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。

小工是南將軍手下的軍師,南將軍現在想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。

注意,南將軍可能會問很多次問題。

輸入

只有一組測試資料

第一行是兩個整數n,m,其中n表示士兵的個數(1

輸出對於每乙個詢問,輸出總殺敵數

每個輸出佔一行

樣例輸入

5 2

1 2 3 4 5

1 32 4

樣例輸出

6

9

首先先來個簡單的演算法,sum[m~n]=sum[n]-sum[m-1];

code:

#include#include#include#include#include#include#include#includeusing namespace std;

int a[1000000+10];

int sum[1000000+10];

int main()

while(m--)

return 0;

}

線段樹演算法,直接扔模板

注意:結構體裡不要申請用不到的變數,否則會memorylimitexceeded

code:

#include#include#include#include#include#include#include#includeusing namespace std;

struct tree

tree[1000010<<2];

void pushup(int o)

void build(int o,int l,int r)

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

build(o<<1,l,mid);

build(o<<1|1,mid+1,r);

pushup(o);

}int querysum(int o,int l,int r,int x,int y)

int main()

return 0;

}

nyoj108 士兵殺敵(一) (線段樹)

描述南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍現在想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。注意,南將軍可能會問很多次問題。輸入 只有一組測試資料 第一行是兩個整數n,m,其中n表示士兵的個數 1 輸出對於每乙個詢問,輸出總...

nyoj 108 士兵殺敵(一)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍現在想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。注意,南將軍可能會問很多次問題。輸入 只有一組測試資料 第一行是...

NYOJ 108 士兵殺敵(一)

時間限制 1000 ms 記憶體限制 65535 kb難度 3 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍現在想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。注意,南將軍可能會問很多次問題。輸入 只有一組測試資料 第一行是兩...