HDU 1166(线段树)
线段树 1 #include <cstdio> 2 #include <iostream> 3 using namespace std; 4 #define N 200010 5 int sum[N]; 6 void build(int l,int r,int root){ 7 if(l==r)scanf("%d",&sum[root]); 8 else { 9 int mid=(l+r)/2; 10 build(l,mid,root*2); 11 build(mid+1,r,root*2+1); 12 sum[root]=sum[root*2]+sum[root*2+1]; 13 } 14 } 15 void add(int i,int j,int l,int r,int root){ 16 if(l==r)sum[root]+=j; 17 else { 18 int mid=(r+l)/2; 19 if(i<=mid)add(i,j,l,mid,root*2); 20 else add(i,j,mid+1,r,root*2+1); 21 sum[root]=sum[root*2]+sum[root*2+1]; 22 } 23 } 24 void query(int x,int y,int l,int r,int root,int &a){ 25 if(x<=l&&y>=r){ 26 a+=sum[root]; 27 return; 28 } 29 int mid=(r+l)/2; 30 if(x<=mid)query(x,y,l,mid,root*2,a); 31 if(y>mid)query(x,y,mid+1,r,root*2+1,a); 32 } 33 int main(){ 34 //freopen("test.txt","r",stdin); 35 int t,n,q,x,y,case1=0; 36 char s[7]; 37 scanf("%d",&t); 38 while(t--){ 39 case1++; 40 printf("Case %d:\n",case1); 41 scanf("%d",&n); 42 build(1,n,1); 43 while(scanf("%s",s)!=EOF){ 44 if(s[0]=='E')break; 45 scanf("%d%d",&x,&y); 46 switch (s[0]){ 47 case 'Q':q=0;query(x,y,1,n,1,q);printf("%d\n",q);break; 48 case 'A':add(x,y,1,n,1);break; 49 case 'S':add(x,-y,1,n,1);break; 50 } 51 } 52 } 53 return 0; 54 }
转载于:https://www.cnblogs.com/Mr-Xu-JH/p/3880733.html
HDU 1166(线段树)相关推荐
- 敌兵布阵 HDU - 1166 (线段树)
线段树模板题: 1 #include<iostream> 2 #include<vector> 3 #include<string> 4 #include<c ...
- HDU 1166 线段树
敌兵布阵 题目链接 大意:给你一个数列,和三个操作, Query操作为查询从i到j之间的数的和 Add操作为第i个数加j Sub操作为第i个数减j 要求每次Query操作你给他一个正确的回答 大概思路 ...
- POJ 2777 ZOJ 1610 HDU 1698 --线段树--区间更新
直接将这3题 放一起了 今天在做线段树的东西 这3个都是区间更新的 查询方式互相不同 反正都可以放到一起吧 直接先上链接了 touch me touch me touch me 关于涉及到区间的修改 ...
- hdu 5367(线段树+区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5367 官方题解: 对于求"高山脉"长度,可以利用线段树.树节点中保存左高度连续长度 ...
- hdu 5266(线段树+LCA)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5266 解题思路: 考虑dfs序,通过在简单的证明可知L~R的LCA为L ~R 中dfs序较小的那个位置 ...
- hdu 5124(线段树区间更新+lazy思想)
http://acm.hdu.edu.cn/showproblem.php?pid=5124 题意:区间覆盖次数问题. 解题思路:线段树水之. #include<iostream> #in ...
- HDU - 4578Transformation——线段树+区间加法修改+区间乘法修改+区间置数+区间和查询+区间平方和查询+区间立方和查询
[题目描述] HDU - 4578Transformation Problem Description Yuanfang is puzzled with the question below: The ...
- poj 2777 AND hdu 5316 线段树
区间染色问题,用线段树可以解决.颜色总类不多,故考虑用二进制数的每一位表示一种颜色,然后父节点的颜色就是孩子节点颜色"或"起来,加上lazy标记,轻松AC. poj 2777: 1 ...
- HDU 5238 线段树+数论
原题:http://acm.hdu.edu.cn/showproblem.php?pid=5238. 题解:给你长度为n的操作序列,和m组操作求每组操作的模29393的值.这道题直接显然是没有前途的, ...
最新文章
- hwclock date
- Swift 基本基本运算符
- 找到了一些很好的算法书和试题
- ​在电网工作,有多高大上?
- 抓住那只喵(HTML5-神经猫)
- python测网络连通性_网络工程师如何在ensp模拟器上玩python自动化配置交换机。...
- switch语句判断范围_MQL5从入门到精通【第四章】(一)条件判断语句
- Xamarin.Android 引导页
- Java 并发和多线程(一) Java并发性和多线程介绍[转]
- C盘软件(应用)搬家瘦身
- 网络负载率计算公式 linux,如何理解Linux CPU负载率的计算方式
- php微信公众号退款,微信公众号支付--4--微信退款
- 计算机协会维修照片,照片门事件后,当年那个毁了陈冠希的电脑修理员,如今变成这样!...
- 什么是二进制,进制之间是如何转换的,浅显易懂的,一看就会
- 【281期】面试官问:淘宝七天自动确认收货,可以怎么实现?
- win10自动更新修复与关闭
- Android 高仿豌豆荚 一键安装app 功能 实现
- 关于android有道词典的修改
- python快递费用计算_python调用快递鸟api实现查快递
- 微信小程序AR扫描识别图(支持多图片)加载3D模型及其动画
热门文章
- 细分tf.multiply()、tf.matmul()、tf.scalar_mul()函数
- 【OpenCV的C++教程2】加载、修改、保存图像
- 【408预推免复习】操作系统引论
- 【深度学习】深度学习安防的探索与实践
- 【Deep Learning笔记】循环神经网络
- 并查集详解(从引入到代码)
- oracle rac 通信端口,修改oracle 10g rac监听端口号为1523的步骤
- @RestController和@Controller区别
- PHP 会话 线程 进程,接上节我们来了解了解多进程的一些基础进程 / 线程 / 多进程 / 父进程 / 子进程 / 会话 / 控制终端等...
- android p获取通话记录_[android] 取得最近通话记录的方法