一维树状数组模板【pascal】
来源:互联网 发布:阿里云美国服务器 vpn 编辑:程序博客网 时间:2024/06/06 05:12
1、单点修改,区间查询
var n,m,tt,x,y :longint; c :array[0..500010] of longint; i :longint;function lowbit(x:longint):longint;begin exit(x and (-x));end;procedure add(x,v:longint);begin while (x<=n) do begin inc(c[x],v); inc(x,lowbit(x)); end;end;function sum(x:longint):longint;var ans:longint;begin ans:=0; while (x>0) do begin inc(ans,c[x]); dec(x,lowbit(x)); end; exit(ans);end;begin read(n,m); for i:=1 to n do begin read(x); add(i,x); end; // for i:=1 to m do begin read(tt,x,y); if (tt=1) then add(x,y) else writeln(sum(y)-sum(x-1)); end;end.
var n,m,tt,x,y,z :longint; c,a :array[0..500010] of longint; i,j :longint;function lowbit(x:longint):longint;begin exit(x and (-x));end;procedure add(x,v:longint);begin while (x<=n) do begin inc(c[x],v); inc(x,lowbit(x)); end;end;function sum(x:longint):longint;var ans:longint;begin ans:=0; while (x>0) do begin inc(ans,c[x]); dec(x,lowbit(x)); end; exit(ans);end;begin read(n,m); for i:=1 to n do read(a[i]); for i:=1 to n do add(i,a[i]-a[i-1]); //注意 // for i:=1 to m do begin read(tt); if (tt=1) then begin read(x,y,z); add(x,z); add(y+1,-z); end else begin read(x); writeln(sum(x)); end; end;end.
——by Eirlys 0 0
- 一维树状数组模板【pascal】
- 一维树状数组模板
- 《一维树状数组》模板
- 树状数组--一维模板
- 【树状数组】树状数组一维二维模板
- hdu4000(一维树状数组模板)
- 树状数组模板(一维的)
- 一二维树状数组模板
- 树状数组--Pascal 山脉
- 【模板篇】树状数组们(一)
- 一维树状数组
- 一维树状数组
- 一维树状数组~
- 一维树状数组
- 一维树状数组
- poj1195 二维树状数组【pascal】
- 树状数组的讲解感觉挺好,和我的一维,二维,树状数组的模板,希望对大家有用
- 一维 二维树状数组
- Python sys.argv[]
- [绍棠] 通过主屏幕的应用Icon,用3D Touch呼出一个菜单 (Home Screen Quick Actions)
- Hadoop 第一课 了解hadoop
- 实习第一周(第二天)(上午)(linux文件拥有者知识)
- 获取本机的IP地址(Windows和Linux兼容)
- 一维树状数组模板【pascal】
- VUE 菜单 +感想
- C#中常用的WebRequest方法
- 手机端的多图片剪辑上传支持手势支持预览
- Ext 主要控件
- 单片机json程序
- 分享个MesaSQLite 注册码
- 电脑慢简单有效三技巧
- DBA常用的一些SQL和视图