給定一數列,規定有兩種操作,一是修改某個元素,二是求區間的連續和。
輸入資料第一行包含兩個正整數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 200 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這題是個模板題,只要注意節點初始值都為0。616624
1450
41
#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...