点修改 段求和
1 var
2 a:array[1..100000] of integer;
3 t:array[1..100000] of longint;
4 i,j,n:integer;
5 function lowbit(x:integer):integer;
6 begin
7 exit(x and (-x));
8 end;
9 procedure edit(k:integer;x:longint);
10 var
11 i,temp:integer;
12 begin
13 i:=k;
14 temp:=a[k]-x;
15 while i<=n do
16 begin
17 inc(t[i],temp);
18 i:=i+lowbit(i);
19 end;
20 end;
21 function sum(k:integer):longint;
22 var
23 i:integer;
24 begin
25 i:=k;
26 while i>0 do
27 begin
28 inc(sum,t[i]);
29 i:=lowbit(i);
30 end;
31 end;
32 begin
33 for i:=1 to n do
34 begin
35 for j:=i-lowbit(i)+1 to i do inc(t[i],a[j]);
36 end;
37 end.