用户ID: 密码: 验证:

登 录

注 册 取回密码

中山教育

中山国际网

中国教育在线

时代财富科技公司 FortuneAge Technology Co., Ltd. 校园博客客服网站(新)

我的资料

Mpq

博客信息

积分:988
等级:4级 lv 4
日志总数:231
发表评论总数:18 ( 查看)
获得评论总数:21
发表留言总数:0
所属学校:三鑫
收藏本站:

最新公告

欢迎光临我的博客!

最新相册

我的日历

最新评论

--游客
好文好文,是您的手笔?如果是您的文章,如果您愿意和我联系,...
还有就是数学不能使用计算器…….......在读初中之前原...
--Mpq
这次似乎不举行冬季长跑……看来在三鑫参加的体育项目最终是以...
--Mpq
看了你的"总结", 挺有针对性的! 相信下学期你一定会有...

RSS


首页 -> 其他题的题库->Number
Number

题目描述:
    给出N个数,M个操作。操作分两种1、C(x,y) 表示把第x个数改成y 2、Q(x,y)表示询问第x个数到第y个数的和是多少。

输入:第一行,一个N(1<=n<=20000)表示有多少个数。第二行有N个数(0<=ai<=10000)。然后一个数M(1<M<=50000)表示有多少个操作。然后下面有M行,分别有以上所述的两种操作。

输出:你只要对Q操作进行输出就可以了。
 
 
Program Number_Mpq;
Const Maxn=20000;
var
  i,x,y,n,m:longint;
  a:array[1..Maxn] of longint;
  sum:array[1..Maxn] of longint;
  lowbit:array[1..Maxn] of longint;
procedure add(p,d:longint);
begin
  while p<=n do
  begin
    inc(sum[p],d);
    p:=p+lowbit[p];
  end;
end;
function sigma(p:longint):longint;
begin
  sigma:=0;
  while p>0 do
  begin
    inc(sigma,sum[p]);
    dec(p,lowbit[p]);
  end;
  exit(sigma);
end;
procedure init;
var
  i:integer;
begin
  readln(n);
  for i:=1 to n do
    lowbit[i]:=i and (i xor (i-1));
  for i:=1 to n do
  begin
    read(a[i]);
    add(i,a[i]);
  end;
  readln;
end;
procedure Main;
var
  ch:char;
  i,x,y:longint;
begin
  readln(m);
  for i:=1 to m do
  begin
    read(ch);
    if ch='C' then
    begin
      readln(x,y);
      Add(x,y-a[x]);
      a[x]:=y;
    end else
    begin
      readln(x,y);
      writeln(sigma(y)-sigma(x-1));
    end;
  end;
end;
begin
assign(input,'Number.in'); reset(input);
assign(output,'Number.out'); rewrite(output);
  init;
  Main;
close(input); close(output);
end.

网友评论

共 0 页,0 条记录  

用户名:
密码:
您的评论:
正在载入编辑器...
请输入验证码:


发 表 评 论

Mpq-中山教师家园