HDU -1166 线段树
#include <algorithm>
#include <iostream>
#include<sstream>
#include<cstring>
#include<string>
#include<cstdio>
#include<cctype>
#include<vector>
#include<deque>
#include<map>
#include<set> #define M 50000
#define inf 0x3f3f3f3f
typedef long long ll; using namespace std; struct Data
{
int left, right, sum, lazy;
}tree[M*];
int n;
int sum, lazy;
int x, y;
string str; void built(int l,int r,int k) {
tree[k].left = l, tree[k].right = r;
if (l == r) {
scanf("%d", &tree[k].sum);
return;
}
int mid = (l + r) / ;
built(l, mid,k*);
built(mid + , r, k * + );
tree[k].sum = tree[k * ].sum + tree[k * + ].sum;
} void down(int k) {
lazy = tree[k].lazy;
tree[k].lazy = ;
tree[k * ].lazy += lazy;
tree[k * + ].lazy += lazy;
tree[k * ].sum += (tree[k * ].right - tree[k * ].left + ) * lazy;
tree[k * + ].sum += (tree[k * + ].right - tree[k * + ].left + ) * lazy;
} void search(int k) {
if (tree[k].left >=x && tree[k].right <=y) {
sum += tree[k].sum;
return;
}
if (tree[k].lazy)down(k);
int mid = (tree[k].left + tree[k].right) / ;
if (x <= mid)search(k * );
if (y > mid)search(k * + );
} void change_inv(int k) {
if (tree[k].left == tree[k].right) {
//tree[k].lazy += add;
tree[k].sum += y;
return;
}
if (tree[k].lazy)down(k);
int mid = (tree[k].left + tree[k].right) / ;
if (x <= mid)change_inv(k * );
else change_inv(k * + );
tree[k].sum = tree[k * ].sum + tree[k * + ].sum;
} int main() {
int T;
cin >> T;
for (int Case = ; Case <= T; Case++) {
scanf("%d", &n);
built(, n, );
printf("Case %d:\n", Case);
while (true){
cin >> str;
if (str == "End")break;
scanf("%d%d", &x, &y);
if (str == "Add") {
change_inv();
}
else if (str == "Sub") {
y *= -;
change_inv();
}
else if (str == "Query") {
sum = ;
search();
printf("%d\n", sum);
}
}
}
return ;
}
HDU -1166 线段树的更多相关文章
- hdu 1166 线段树(sum+单点修改)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 敌兵布阵 HDU 1166 线段树
敌兵布阵 HDU 1166 线段树 题意 这个题是用中文来描写的,很简单,没什么弯. 解题思路 这个题肯定就是用线段树来做了,不过当时想了一下可不可用差分来做,因为不熟练就还是用了线段树来做,几乎就是 ...
- HDU(1166),线段树模板,单点更新,区间总和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 第一次做线段树,帆哥的一句话,我记下来了,其实,线段树就是一种处理数据查询和更新的手段. 然后, ...
- hdu 1166 线段树单点更新
等线段树复习完再做个总结 1101 2 3 4 5 6 7 8 9 10Query 1 3Add 3 6Query 2 7Sub 10 2Add 6 3Query 3 10End Case 1:633 ...
- A - 敌兵布阵 HDU - 1166 线段树(多点修改当单点修改)
线段树板子题练手用 #include<cstdio> using namespace std; ; int a[maxn],n; struct Node{ int l,r; long lo ...
- hdu 1166 线段树(单点增减 区间求和)
Sample Input1101 2 3 4 5 6 7 8 9 10Query 1 3Add 3 6Query 2 7Sub 10 2Add 6 3Query 3 10End Sample Outp ...
- hdu 1166线段树 单点更新 区间求和
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU 1166 线段树模板&树状数组模板
HDU1166 上好的线段树模板&&树状数组模板 自己写的第一棵线段树&第一棵树状数组 莫名的兴奋 线段树: #include <cstdio> using nam ...
- hdu 1166 线段树 奇兵布阵
#include<iostream> using namespace std; ; )*];//n个叶子就有2*n-4*n个节点 ]; int n; void getup(int root ...
- hdu 1166 线段树 区间求和 +单点更新 CD模板
题目链接 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
随机推荐
- 使用BurpSuite和Hydra爆破相关的服务(9.25 第十一天)
使用BP和Hydra爆破相关的服务 Hydra:九头蛇,开源的功能强大的爆破工具,支持的服务有很多,使用Hydra爆破C/S架构的服务. 使用BurpSuite爆破web服务 DVWA:web应用程序 ...
- POJ 2586:Y2K Accounting Bug
Y2K Accounting Bug Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11297 Accepted: 56 ...
- PHP的操作符与控制结构
一.操作符 操作符是用来对数组和变量进行某种操作运算的符号. 算术操作符 操作符 名称 示例 + 加 $a+$b - 减 $a-$b * 乘 $a*$b / 除 $a/$b % 取余 $a%$b 复 ...
- DBUtils模版CRUD
准备:导包 1.创建c3p0-config.xml配置文件放在src下 <?xml version="1.0" encoding="UTF-8"?> ...
- python函数-函数进阶
python函数-函数进阶 一.命名空间和作用域 1.命名空间 内置命名空间 —— python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被 ...
- promise 核心 几个小问题
1.如何改变pending的壮体 抛出异常.pending变为rejected // throw new Error('fail') 内部抛出异常也这样 reason为抛出的error resol ...
- Vue框架的介绍及使用
Vue框架 定义:渐进式 JavaScript 框架 渐进式:可以控制一个页面的一个标签,可以控制一系列标签,也可以控制整个页面,甚至可以控制整个前台项目. 通过对框架的了解与运用程度,来决定其在整个 ...
- swoole怎么连接数据库
异步连接到MySQL服务器. $serverConfig为MySQL服务器的配置,必须为关联索引数组 $callback连接完成后回调此函数 swoole连接数据库实例: 推荐学习:swoole教程 ...
- mysql5.7.21源码安装
1.下载安装包 MySQL 官方下载地址:https://dev.mysql.com/downloads/mysql/ MySQL 5.7官方安装文档:https://dev.mysql.com/d ...
- 对CI框架中几个文件libraries
对CI框架中几个文件libraries,helpers,hooks夹说明 来源:未知 时间:2014-10-20 11:37 阅读数:117 作者:xbdadmin [导读] 1.lib ...