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 ...
随机推荐
- 转载:Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理
转载自:https://blog.51cto.com/wjw7702/1150225 一.概述 如今利用nginx做反向代理和负载均衡的实例已经很多了,针对不同的应用场合,还有很多需要注意的地方,本文 ...
- HDU 5461:Largest Point
Largest Point Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...
- 读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图
读书笔记 - js高级程序设计 - 第十三章 事件 canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好 有时候即使浏览器支持,操作系统如果缺缺 ...
- 数据结构顺序表中Sqlist *L,&L,Sqlist *&L
//定义顺序表L的结构体 typedef struct { Elemtype data[MaxSize]: int length; }SqList; //建立顺序表 void CreateList(S ...
- android——TextView默认文字开发时显示运行时隐藏
根布局添加属性: xmlns:tools="http://schemas.android.com/tools" textview添加属性: tools:text="默认文 ...
- 【每日Scrum】第十天冲刺
一.计划会议内容 尝试整合代码 二.任务看板 任务看板 已完成:登录与个人界面布局实现,UI设计美化,地图主界面 进行中:功能整合, 待进行:连接数据库 三.scrum讨论照片 四.产品的状态 无 五 ...
- docker搭建redis主从集群和sentinel哨兵集群,springboot客户端连接
花了两天搭建redis主从集群和sentinel哨兵集群,讲一下springboot客户端连接测试情况 redis主从集群 从网上查看说是有两种方式:一种是指定配置文件,一种是不指定配置文件 引用地址 ...
- bugku-杂项 convert
打开题目文件,一大堆01码,用py转换成hex f=open("in.txt","r") print hex(int(str(f.read()),2)) f.c ...
- Web报文压缩方法
编译时压缩 https://www.cnblogs.com/qiuzhimutou/p/7592875.html 这里我列举几个常用的能够用于减少包体大小的插件,我们可以根据项目需求选择性的使用: c ...
- mybatis+mysql 通过sql脚本生成mapper的部分内容
SQL mysql SELECT concat('<if test="', COLUMN_NAME, ' != null"> ', COLUMN_NAME, ',< ...