線段樹 區間求和

2021-09-25 18:36:53 字數 1074 閱讀 6387

給定一數列,規定有兩種操作,一是修改某個元素,二是求區間的連續和。

輸入資料第一行包含兩個正整數n,m(n<=100000,m<=500000),以下是m行,

每行有三個正整數k,a,b(k=0或1, a,b<=n).k=0時表示將a處數字加上b,k=1時表示詢問區間[a,b]內所有數的和。對於每個詢問輸出對應的答案。

10 20

0 1 10

1 1 4

0 6 6

1 4 10

1 8 9

1 4 9

0 10 2

1 1 8

0 2 10

1 3 9

0 7 8

0 3 10

0 1 1

1 3 8

1 6 9

0 5 5

1 1 8

0 4 2

1 2 8

0 1 1

1060

616624

1450

41

這題是個模板題,只要注意節點初始值都為0。

#includeusing namespace std; 

const int maxn=1e5+10;

#define ll long long

ll sum[maxn*4];//要開四倍空間

ll query(int x,int y,int l,int r,int rt)

void update(int x,int y,int l,int r,int rt)

int mid=(l+r)/2;

if(x<=mid)

update(x,y,l,mid,2*rt);

else

update(x,y,mid+1,r,2*rt+1);

sum[rt]=sum[2*rt]+sum[2*rt+1];

}void build(int l,int r,int rt)//編號rt節點包含的區間是[l,r]

int main()

else if(k==0)

}return 0;

}

線段樹(區間更新求和)

poj 3468 include using namespace std define max 100100 struct node 求區間長度 int get dis node tree max 3 long long d max 建樹 long long build int left,int r...

線段樹 區間求和模板 (區間修改)

include include include include include include include include include define mem a memset a,0,sizeof a define mem2 a memset a,1,sizeof a define mod ...

線段樹動態開點區間加區間求和

陝西師範大學第七屆程式設計競賽網路同步賽 h.萬惡的柯怡 保證葉子節點被完整的覆蓋,需要開節點,就把左右兒子都開出來,其餘和普通線段樹一樣。用結構體內部函式,記憶體不足,第一次遇見本地問題不嚴重 不明嚼慄?include typedef long long ll const int n 400001...