POJ3468(树状数组区间维护)
2015-11-22 15:03
495 查看
模板题
#include"cstdio" #include"cstring" #define lowbit(i) i&(-i) using namespace std; const int MAXN=100005; typedef long long LL; LL bit0[MAXN]; LL bit1[MAXN]; void add(LL* b,int i,int c) { while(i<=MAXN) { b[i]+=c; i+=lowbit(i); } } LL sum(LL* b,int i) { LL s=0; while(i>0) { s+=b[i]; i-=lowbit(i); } return s; } void solve(int n,int q) { for(int i=1;i<=n;i++) { int a; scanf("%d",&a); add(bit0,i,a); } for(int j=0;j<q;j++) { scanf("%*c"); char op; scanf("%c",&op); if(op=='C') { int l,r,x; scanf("%d %d %d",&l,&r,&x); add(bit0,l,-x*(l-1)); add(bit1,l,x); add(bit0,r+1,x*r); add(bit1,r+1,-x); } else { LL res=0; int l,r; scanf("%d %d",&l,&r); res+=sum(bit0,r)+sum(bit1,r)*r; res-=sum(bit0,l-1)+sum(bit1,l-1)*(l-1); printf("%lld\n",res); } } } int main() { int n,q; while(scanf("%d %d",&n,&q)!=EOF) { memset(bit0,0,sizeof(bit0)); memset(bit1,0,sizeof(bit1)); solve(n,q); } return 0; }
相关文章推荐
- linux /proc/loadavg(平均负载)
- 通过Docker源安装最新版本
- 在ubuntu15.10上编译arm-linux环境使用的log4c步骤
- Linux运维式具之pdsh
- centos 下设置grub密码
- linux日常管理-防火墙netfilter工具-iptables-1
- linux Loadavg和CPU利用率是如何算出来的
- linux centos7 cgroup 命令行操作
- .NET跨平台之旅:在Linux上将ASP.NET 5运行日志写入文件
- EF异常:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生
- linux 创建新用户添加到sudo用户组及基本安装操作等
- open和fopen的区别
- Linux命令--scp的使用详解
- 全面解析Linux 内核 3.10.x - 内核入口函数__kernel_entry
- PowerShell GUI 之基础知识
- Tomcat Servlet编码问题
- Linux Advance--同步信号处理
- 在centos中编译putty时提示找不到gtk库的解决办法
- linux下配置Qt5 开发环境
- 为centos安装xfce4桌面环境的命令