LightOJ 1112 Curious Robin Hood (单点更新+区间求和)
http://lightoj.com/volume_showproblem.php?problem=1112
题目大意:
1 i 将第i个数值输出,并将第i个值清0
2 i v 将第i个数值加v
3 i j 输出从i到j的数值和
简单的单点更新+区间求和,代码很简单的模板
但此题有一个神坑的地方当操作为1是输出第i个数值不是直接输出,而是通过查找输出(太坑了。。。)
- #include<stdio.h>
- #include<string.h>
- #include<queue>
- #include<algorithm>
- #define N 100010
- #define Lson root<<1, L, tree[root].Mid()
- #define Rson root<<1|1, tree[root].Mid() + 1, R
- using namespace std;
- struct Tree
- {
- int L, R;
- long long sum, e;
- bool op;
- int Mid()
- {
- return (R + L) / ;
- }
- } tree[N * ];
- long long al[N];
- void Build(int root, int L, int R)
- {
- tree[root].L = L, tree[root].R = R;
- tree[root].op = false;
- if(L == R)
- {
- tree[root].sum = al[L];
- return ;
- }
- Build(Lson);
- Build(Rson);
- tree[root].sum = tree[root<<].sum + tree[root<<|].sum;
- }
- void Insert(int root, int k, long long e)
- {
- tree[root].sum += e;
- if(tree[root].L == tree[root].R)
- return ;
- if(k <= tree[root].Mid())
- Insert(root<<, k, e);
- else if(k > tree[root].Mid())
- Insert(root<<|, k, e);
- }
- long long Query(int root, int L, int R)
- {
- if(tree[root].L == L && tree[root].R == R)
- return tree[root].sum;
- if(R <= tree[root].Mid())
- return Query(root<<, L, R);
- else if(L > tree[root].Mid())
- return Query(root<<|, L, R);
- else
- return Query(Lson) + Query(Rson);
- }
- int main()
- {
- int m, n, a, p, b, i, t, x = ;
- long long e;
- char s[];
- scanf("%d", &t);
- while(t--)
- {
- x++;
- scanf("%d%d", &m, &n);
- for(i = ; i <= m ; i++)
- scanf("%lld", &al[i]);
- Build(, , m);
- printf("Case %d:\n", x);
- while(n--)
- {
- scanf("%d", &p);
- if(p == )
- {
- scanf("%d", &a);
- printf("%d\n", Query(, a + , a + ));//注意! ! ! 坑来了!!!
- Insert(, a + , -Query(, a + , a + ));//此处一样
- }
- else if(p == )
- {
- scanf("%d%d", &a, &b);
- Insert(, a + , b);
- }
- else if(p == )
- {
- scanf("%d%d", &a, &b);
- printf("%lld\n", Query(, a + , b + ));
- }
- }
- }
- return ;
- }
LightOJ 1112 Curious Robin Hood (单点更新+区间求和)的更多相关文章
- Lightoj 1112 - Curious Robin Hood 【单点改动 + 单点、 区间查询】【树状数组 水题】
1112 - Curious Robin Hood PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: 64 MB ...
- 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],求环序列中逆序对 ...
- HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和)
HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和) 点我挑战题目 题意分析 根据数据范围和询问次数的规模,应该不难看出是个数据结构题目,题目比较裸.题中包括以下命令: 1.Add(i ...
- hdu 1166线段树 单点更新 区间求和
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu1166(线段树单点更新&区间求和模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 题意:中文题诶- 思路:线段树单点更新,区间求和模板 代码: #include <iost ...
- poj 3321 单点更新 区间求和
Apple Tree Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u Java c ...
- hdu 1166 (单点更新+区间求和+裸题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...
随机推荐
- Debian 如何更改hdmi接口输出的分辨率
1. 先删除无用的文件: a) Boot/boot.src b) Boot/script.bin 2. 打开boot/script.fex,找到disp_init节点 a) 将screenX_outp ...
- UVa 10391 (水题 STL) Compound Words
今天下午略感无聊啊,切点水题打发打发时间,=_=|| 把所有字符串插入到一个set中去,然后对于每个字符串S,枚举所有可能的拆分组合S = A + B,看看A和B是否都在set中,是的话说明S就是一个 ...
- MYSQL复制的几种模式
MySQL 5.1 中,在复制方面的改进就是引进了新的复制技术:基于行的复制. MYSQL复制的几种模式 MySQL 5.1 中,在复制方面的改进就是引进了新的复制技术:基于行的复制.简言之,这种新技 ...
- yii2.0 输出url 注册js css文件
//输出url <a href="<?= Url::to(['/users/login/login','id'=>5,'mark'=>true]) ?>&qu ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.3配置共享磁盘
2.3.配置共享磁盘 2.3.1.创建共享磁盘 在cmd中进入WMware Workstation 10.0 安装目录: 1.创建存储Oracle Clusterware文件 (Oracle Clu ...
- [Everyday Mathematics]20150214
设 $\dps{x\in \sex{0,\frac{\pi}{2}}}$, 试比较 $\tan(\sin x)$ 和 $\sin(\tan x)$.
- Yii系列教程(四):使用Memcache保存会话
1环境准备 安装Memcached服务端: yum -y installmemcached.x86_64 安装PHP-Memcache扩展: yum -y installphp-pecl-memcac ...
- devexpress datagrid 与imageEdit以及如何存图片到数据库 z
http://blog.csdn.net/haoyujie/article/details/41277703 首先建立了一个数据库的表,这个表中,有一个字段是image类型(SQL Server数据库 ...
- [讲座]【项目收集】“清流资本”互联网金融沙龙——颠覆者的创新与机会
[项目收集]"清流资本"互联网金融沙龙--颠覆者的创新与机会 2014年4月19日 14:00 - 2014年4月19日 17:00 北京海淀北京海淀区海淀图书城南侧3W咖啡 限额 ...
- 【,net】发布网站问题
今天解决了一个发布后网站访问不了的问题: 问题: 发布网站:http://172.168.1.102:2222/nologin.html,但是页面一直处于刷新状态,进行不了系统: 解决方法: 问开发他 ...