HDU (线段树 单点更新) 敌兵布阵
哎,又切了一天的水题。
线段树果然必须自己写出来才能叫真正的会了,之前一直在套模板确实不好。
这个题目是单点更新 之 单点增减,= ̄ω ̄=
- #include <cstdio>
- const int maxn = ( << );
- int n, qL, qR, p, v, sum[maxn];
- void build(int o, int L, int R)
- {
- if(L == R) { scanf("%d", &sum[o]); return; }
- int M = (L + R) / ;
- build(o*, L, M);
- build(o*+, M+, R);
- sum[o] = sum[o*] + sum[o*+];
- }
- void update(int o, int L, int R)
- {
- if(L == R) { sum[o] += v; return; }
- int M = (L + R) / ;
- if(p <= M) update(o*, L, M);
- else update(o*+, M+, R);
- sum[o] = sum[o*] + sum[o*+];
- }
- int query(int o, int L, int R)
- {
- if(qL <= L && qR >= R) return sum[o];
- int ans = ;
- int M = (L +R) / ;
- if(qL <= M) ans += query(o*, L, M);
- if(qR > M) ans += query(o*+, M+, R);
- return ans;
- }
- char cmd[];
- int main()
- {
- //freopen("in.txt", "r", stdin);
- int T; scanf("%d", &T);
- for(int kase = ; kase <= T; kase++)
- {
- printf("Case %d:\n", kase);
- scanf("%d", &n);
- build(, , n);
- while(scanf("%s", cmd) == )
- {
- if(cmd[] == 'E') break;
- if(cmd[] == 'Q')
- {
- scanf("%d%d", &qL, &qR);
- printf("%d\n", query(, , n));
- }
- else
- {
- scanf("%d%d", &p, &v);
- if(cmd[] == 'S') v = -v;
- update(, , n);
- }
- }
- }
- return ;
- }
代码君
HDU (线段树 单点更新) 敌兵布阵的更多相关文章
- HDU (线段树 单点更新) I Hate It
和上一道题没什么变化,只不过把单点增减变成了单点替换,把区间求和变成了区间求最大值. #include <cstdio> #include <algorithm> using ...
- HDU 1166 敌兵布阵(线段树单点更新,板子题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)
HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...
- hdu 1166 敌兵布阵 (线段树单点更新)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- HDU 1166 敌兵布阵(线段树单点更新,区间查询)
描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...
- HDUOJ----1166敌兵布阵(线段树单点更新)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU 1166 排兵布阵(线段树单点更新)
题意: 给定n个兵营的士兵初始值, 然后有最多40000个操作: 操作一共有两种, 一个是查询给定[a,b]区间兵营的士兵总和. 另一个是增加/减少指定兵营的士兵数目. 输出每次查询的值. 分析: 线 ...
- hdu 1166线段树 单点更新 区间求和
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
随机推荐
- 纯js页面跳转整理
js方式的页面跳转1.window.location.href方式 <script language="javascript" type="text/java ...
- MySQL 百万级分页优化
MySQL 百万级分页优化 http://www.jb51.net/article/31868.htm 一般刚开始学SQL的时候,会这样写 : , ; 但在数据达到百万级的时候,这样写会慢死 : , ...
- 【leetcode】Contains Duplicate & Rectangle Area(easy)
Contains Duplicate Given an array of integers, find if the array contains any duplicates. Your funct ...
- iOS-CALayer遮罩效果
self.view.backgroundColor = [UIColor blackColor]; , , , ); self.imageLayer.contents = (__ ...
- ExtJs之Ext.isEmpty
<!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...
- kafka配置
官网:http://kafka.apache.org/ 主要有3种安装方式: 1. 单机单broker 2. 单机多broker 3. 多机多broker 1. wget http://mirror. ...
- WCF分布式开发步步为赢(3)WCF服务元数据交换、配置及编程开发
今天我们继续WCF分布式开发步步为赢(3)WCF服务元数据交换.配置及编程开发的学习.经过前面两节的学习,我们了解WCF分布式开发的相关的基本的概念和自定义宿主托管服务的完整的开发和配置过程.今天我们 ...
- excel设置下拉菜单,并且不同值会显示不同颜色
工作中常常要用的excel,每次都会有新的需求,然后不会,然后百度,然后过段时间可能就又忘了,于是就想说,自己记录下来~~~因为自己用的都是2010,其实哪个版本都差不多,都是应该可以找到相应的按钮滴 ...
- ADs系列之通用数据解析服务GAS(即将开源)
面对成百上千的生产系统用户操作数据接入落地,你是否厌倦了每次机械编写打包解包的代码?对一次性接入多个数据的时候,还要对不同人联调,费时费力,你是否还会手忙脚乱,忙中不断出错?是否当数据出问题了,用的时 ...
- Struts2笔记——与ServletAPI解耦
与ServletAPI解耦的访问方式 为了避免与 Servlet API 耦合在一起, 方便 Action 做单元测试, Struts2 对 HttpServletRequest, HttpSessi ...