南阳oj 116 士兵杀敌二 线段树
来源:互联网 发布:淘宝群词荟萃 编辑:程序博客网 时间:2024/05/22 02:31
/*此题是线段树的区间求和查询,已经线段树的单点跟新。线段树不是很懂的同学可以看这个里面有非常详细的讲解。怎么建立线段树,怎么做线段树,相信大家看了一定可以做出这个题加油~~~~~~http://blog.csdn.net/lw277232240/article/details/77092634*/#include<stdio.h>#include<string.h>#include<stdlib.h>using namespace std;#define MAX 1000000*4+10int sum[MAX];int add[MAX];int n,m;void PushUp(int rt){ sum[rt]=sum[rt*2]+sum[rt*2+1];}void build(int rt,int left,int right){ add[rt]=0; if(left==right) { scanf("%d",&sum[rt]); } else { build(rt*2,left,(left+right)/2); build(rt*2+1,(left+right)/2+1,right); PushUp(rt); }}void PushDown(int rt,int m){ if(add[rt]) { add[rt*2]+=add[rt]; add[rt*2+1]+=add[rt]; sum[rt*2]+=add[rt]*(m-(m>>1)); sum[rt*2+1]+=add[rt]*(m>>1); add[rt]=0; }}int query(int rt,int left,int right,int l,int r){ if(left>=l&&right<=r) { return sum[rt]; } PushDown(rt,right-left+1); int mid=(left+right)/2; int rat=0; if(l<=mid) rat+=query(rt*2,left,mid,l,r); if(r>mid) rat+=query(rt*2+1,mid+1,right,l,r); return rat;}void update(int rt,int left,int right,int l,int r,int c){ if(left>=l&&right<=r) { sum[rt]+=c*(right-left+1); add[rt]+=c; return ; } PushDown(rt,right-left+1); int mid=(right+left)/2; if(l<=mid) update(rt*2,left,mid,l,r,c); if(r>mid) update(rt*2+1,mid+1,right,l,r,c); PushUp(rt);}int main(){ scanf("%d%d",&n,&m); build(1,1,n); char a[10]; int x,y; for(int i=1;i<=m;i++) { scanf("%s",a); scanf("%d%d",&x,&y); if(a[0]=='Q') { printf("%d\n",query(1,1,n,x,y)); } else { update(1,1,n,x,x,y); } }}
阅读全文
0 0
- 南阳oj 116 士兵杀敌二 线段树
- 南阳OJ 116-士兵杀敌(二)
- 南阳oj[116]士兵杀敌(二)
- 南阳116士兵杀敌(二)(线段树)
- 【南阳OJ 116】士兵杀敌(二)(线段树)(更改某一点的值&查找总和 模板题)
- 南阳OJ 108 士兵杀敌(一)【线段树模板】
- 【南阳 oj】108--士兵杀敌(1)(线段树)
- 南阳oj 士兵杀敌(二) 题目116 NYOJ 数据结构
- 士兵杀敌(二)||南阳OJ
- 【南阳OJ116】士兵杀敌(二)(线段树)
- 南阳理工acm 116士兵杀敌(二)(线段树)
- NYOJ-116 士兵杀敌(二) (线段树)
- 南阳 116 士兵杀敌(二)
- 士兵杀敌(二)(南阳116)
- 南阳-116-士兵杀敌(二)
- 【南阳OJ 108】士兵杀敌(一)(线段树求和)
- 【南阳OJ 119】士兵杀敌(三)(线段树)(最大值&最小值问题 模板题)
- 【南阳oj 108士兵杀敌(一)】 (线段树 模板题)
- 牛客6
- 判断网络 并选择加载图片的方式
- Spring 4初级 2
- listview多条目展示
- 分治法和动态规划求解最长公共子串
- 南阳oj 116 士兵杀敌二 线段树
- 多线程开发要点1:如何使用类的成员函数创建线程
- UML类图关系
- queue
- 在移动网络状态下,选择加载图片模式
- 13.1.2 拷贝赋值运算符
- 破解常用断点设置
- docker registry带ssl认证的私有仓库搭建
- 图论--最短路问题--Bellman-Ford算法