給定乙個長度為n(n<=100000),初始值都為0的序列,x(x<=10000)次的修改某些位置上的數字,每次加上乙個數,然後提出y (y<=10000)個問題,求每段區間的和。時間限制1秒。
輸入格式:
第一行1個數,表示序列的長度n
第二行1個數,表示操作的次數w
後面依次是w行,分別表示加入和詢問操作
其中,加入用x表示,詢問用y表示
x的格式為"x a b" 表示在序列a的位置加上b
y的格式為"y a b" 表示詢問a到b區間的加和
輸出格式:
每行乙個數,分別是每次詢問的結果
輸入樣例#1:複製
54x 3 8
y 1 3
x 4 9
y 3 4
輸出樣例#1:複製
817
線段樹;
1 #include2const
int maxn=1e5+10;3
intn,m;
4int
t[maxn];
5char
ch;6
intx,y,z;
7void add(int k,int l,intr)9
int mid=l+r>>1,ls=k<<1,rs=ls|1;10
if(x<=mid) add(ls,l,mid);
11else add(rs,mid+1
,r);
12 t[k]=t[ls]+t[rs];13}
14void tot(int k,int l,int
r)16
int mid=l+r>>1,ls=k<<1,rs=ls|1;17
if(x<=mid) tot(ls,l,mid);
18if(y>mid) tot(rs,mid+1
,r);19}
20int
main()
28if(ch=='y'
)33}34
return0;
35 }
洛谷 2068 統計和
給定乙個長度為n n 100000 初始值都為0的序列,x x 10000 次的修改某些位置上的數字,每次加上乙個數,然後提出y y 10000 個問題,求每段區間的和。時間限制1秒。輸入格式 第一行1個數,表示序列的長度n 第二行1個數,表示操作的次數w 後面依次是w行,分別表示加入和詢問操作 其...
洛谷P2068 統計和
給定乙個長度為 n n leq 100000 初始值都為 0 的序列,x x leq 10000 次的修改某些位置上的數字,每次加上乙個數,然後提出 y y leq 10000 個問題,求每段區間的和。時間限制 1 秒。輸入格式 第一行 1 個數,表示序列的長度 n 第二行 1 個數,表示操作的次數...
洛谷P2068 統計和題解
給定乙個長度為n n 100000 初始值都為0的序列,x x 10000 次的修改某些位置上的數字,每次加上乙個數,然後提出y y 10000 個問題,求每段區間的和。時間限制1秒。第一行1個數,表示序列的長度n 第二行1個數,表示操作的次數w 後面依次是w行,分別表示加入和詢問操作 其中,加入用...