hdu1166(线段树单点更新&区间求和模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166
题意:中文题诶~
思路:线段树单点更新,区间求和模板
代码:
- #include <iostream>
- #include <stdio.h>
- #define lson l, mid, rt << 1
- #define rson mid + 1, r, rt << 1 | 1
- using namespace std;
- const int MAXN = 5e4 + ;
- int sum[MAXN << ];
- void push_up(int rt){//向上求和
- sum[rt] = sum[rt << ] + sum[rt << | ];
- }
- //建树
- void build(int l, int r, int rt){//sum[rt] 对应区间 [l, r] 的和
- if(l == r){
- scanf("%d", &sum[rt]);
- return;
- }
- int mid = (l + r) >> ;
- build(lson);
- build(rson);
- push_up(rt);//向上更新节点
- }
- //单点更新
- void updata(int p, int add, int l, int r, int rt){//在p点增加add
- if(l == r){//找到p点
- sum[rt] += add;//单点更新
- return;
- }
- int mid = (l + r) >> ;
- if(p <= mid) updata(p, add, lson);
- else updata(p, add, rson);
- push_up(rt);//向上更新节点
- }
- //区间求和
- int query(int L, int R, int l, int r, int rt){//对[L, R]区间求和
- if(L <= l && R >= r) return sum[rt];//当前区间[l, r]包含在求和区间[L, R]中
- int ans = ;
- int mid = (l + r) >> ;
- if(L <= mid) ans += query(L, R, lson);//L在mid左边
- if(R > mid) ans += query(L, R, rson);//R在mid右边
- return ans;
- }
- int main(void){
- int t, n;
- scanf("%d", &t);
- for(int i = ; i <= t; i++){
- printf("Case %d:\n", i);
- scanf("%d", &n);
- build(, n, );
- char s[];
- while(scanf("%s", s) && s[] != 'E'){
- int x, y;
- scanf("%d%d", &x, &y);
- if(s[] == 'Q') printf("%d\n", query(x, y, , n, ));
- else if(s[] == 'A') updata(x, y, , n, );
- else updata(x, -y, , n, );
- }
- }
- return ;
- }
hdu1166(线段树单点更新&区间求和模板)的更多相关文章
- POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)
POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和) 题意分析 卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果.卡卡很喜欢苹果.树上有N个节点,卡卡给他们编号1到N,根 ...
- POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)
POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化) 题意分析 前置技能 线段树求逆序对 离散化 线段树求逆序对已经说过了,具体方法请看这里 离散化 有些数 ...
- HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)
HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...
- hdu 1166线段树 单点更新 区间求和
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu1394(枚举/树状数组/线段树单点更新&区间求和)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给出一个循环数组,求其逆序对最少为多少: 思路:对于逆序对: 交换两个相邻数,逆序数 +1 ...
- hdu2795(线段树单点更新&区间最值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题意:有一个 h * w 的板子,要在上面贴 n 条 1 * x 的广告,在贴第 i 条广告时要 ...
- HDU 3308 LCIS(线段树单点更新区间合并)
LCIS Given n integers. You have two operations: U A B: replace the Ath number by B. (index counting ...
- 【HDU】1754 I hate it ——线段树 单点更新 区间最值
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 1166 敌兵布阵(线段树点更新区间求和裸题)
Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...
随机推荐
- 在RedHat Linux系统中安装和配置snmp服务
检查系统是否安装snmp服务 # rpm -qa|grep snmp net-snmp-5.3.2.2-17.el5 net-snmp-perl-5.3.2.2-17.el5 net-snmp-dev ...
- OC中RAC编程block的基本使用
在OC中block的基本使用 // // ViewController.h // RAC--test // // Created by Aaron on 17/1/17. // Copyright © ...
- Linux桥接网络配置
在虚拟机网络配置中,选择桥接的方式.然后进入linux进行设置. 编辑 vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPR ...
- Quartz的misfire理解
misfire用于Trigger触发时,线程池中没有可用的线程或者调度器关闭了,此时这个Trigger变为misfire.当下次调度器启动或者有可以线程时,会检查处于misfire状态的Trigger ...
- uboot 2013.01 代码简析(1)开发板配置
u-boot下载地址:ftp://ftp.denx.de/pub/u-boot/u-boot-2013.01.01.tar.bz2 下载之后对该文件进行解压. 我试着分析smdk2410_config ...
- 可信执行环境(TEE)介绍 与应用
原文:http://blog.csdn.net/wed110/article/details/53894927 可信执行环境(TEE,Trusted Execution Environment) 是G ...
- Spring Boot2.0之多数据源分布式事务问题
分布式事务解决方案的问题, 分布式事务产生的原因: 多个不同的服务连接不同的数据源 ,做分布式事务的管理. 这种情况是连接两个数据源的情况,然后事务管理器是这样的 只管理了test02的这端业务代码. ...
- UER#7 T2
题意:给定n个数,对于2到n,分别输出一个答案.答案定义为:对于当前的数k,在原数组中找一个长度为k的区间,使得区间最值之差最小,输出差值.注意,差值允许5%的误差. 很少看见近似算法的题啊..跪烂V ...
- HTML5 SVG实现过山车动画
HTML5 SVG实现过山车动画是一款jQuery特效很酷的HTML5 SVG动画,这款HTML5动画是过山车效果,主要是利用了SVG的path动画来实现的,效果非常酷. http://www.hui ...
- html5--2.3新的布局元素(2)-article
html5--2.3新的布局元素(2)-article 学习要点 了解article元素的语义和用法 完成一个简单的实例 article元素(标签) 用于定义一个独立的内容区块,比如一篇文章,一篇博客 ...