【原创】tyvj1038 忠诚 & 计蒜客 管家的忠诚 & 线段树(单点更新,区间查询)
最简单的线段树之一,中文题目,不翻译。。。。
注释讲的比较少,这已经是最简单的线段树,如果看不懂真的说明最基础的理论没明白
推荐一篇文章http://www.cnblogs.com/liwenchi/p/5760498.html
可能和我的线段树风格不一样,无所谓啦,多理解,理解了就可以自己编自己喜欢风格的模板
前排强势提醒!!!线段树的函数中只要涉及到区间(更新/查询),就有一个很容易出错的点。
详情见我的另一篇:http://www.cnblogs.com/liwenchi/p/5761257.html
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 1000003
int ans[];
struct nod
{
int l,r;
int data;
}tree[*N]; void push_up(int i)
{
tree[i].data = min(tree[i*].data,tree[i*+].data);//更新tree[i]的最小值,由左孩子右孩子节点决定
}
void build_tree(int i,int l,int r)
{
tree[i].l=l;
tree[i].r=r;
tree[i].data = ;
if(l==r)
{
return ;
}
int mid=(l+r)/;
build_tree(i*,l,mid);
build_tree(i*+,mid+,r);
push_up(i); //理论上讲,建树不用加这个,加了也不错
}
void updata(int i,int k,int v)//更新
{
if(tree[i].l==k&&tree[i].r==k)
{
tree[i].data=v;
return ;
}
int mid=(tree[i].l+tree[i].r)/;
if(k<=mid) //这里要是不懂,可以类比二叉排序树
updata(i*,k,v);
else
updata(i*+,k,v);
push_up(i); //更新应该要加的啊哦,更新完以后,更新这个点的最小值
} int query(int i,int l,int r)//查询
{
if(l<=tree[i].l&&tree[i].r<=r)
{
return tree[i].data;
}
int mid=(tree[i].l+tree[i].r)/;
if(r<=mid) //如果R都小于MID了,说明一定是从左孩子节点来的(这里一开始怒错无数次,后来这样写过了,至今不知道为什么....)
return query(i*,l,r);
if(l>mid) //如果L都大于MID了,说明一定是从右孩子节点来的
return query(i*+,l,r);
return min(query(i*,l,r),query(i*+,l,r));//否则是从两个孩子节点来的,比较出最小值返回
}
int main()
{
int n,m,top = ;
scanf("%d%d",&m,&n);
build_tree(,,m);
for(int i=;i<=m;i++)
{
int account;
scanf("%d",&account);
updata(,i,account);
}
for(int i=;i<=n;i++)
{
int l,r;
scanf("%d%d",&l,&r);
ans[top++] = query(,l,r);
}
for(int i=;i<top-;i++)
printf("%d ",ans[i]);
printf("%d",ans[top - ]);//输出有点坑
}
当然也可以不要更新节点的函数,建树的时候直接把n组账单的值直接建到树里
我这种写法只是更具有一般性啦
【原创】tyvj1038 忠诚 & 计蒜客 管家的忠诚 & 线段树(单点更新,区间查询)的更多相关文章
- 计蒜客 28315.Excellent Engineers-线段树(单点更新、区间最值) (Benelux Algorithm Programming Contest 2014 Final ACM-ICPC Asia Training League 暑假第一阶段第二场 E)
先写这几道题,比赛的时候有事就只签了个到. 题目传送门 E. Excellent Engineers 传送门 这个题的意思就是如果一个人的r1,r2,r3中的某一个比已存在的人中的小,就把这个人添加到 ...
- [计蒜客T2238]礼物_线段树_归并排序_概率期望
礼物 题目大意: 数据范围: 题解: 这题有意思啊($md$卡常 直接做怎么做? 随便上个什么东西,维护一下矩阵乘和插入,比如说常数还算小的$KD-Tree$(反正我是没见人过过 我们漏掉了一个条件, ...
- 计蒜客 41391.query-二维偏序+树状数组(预处理出来满足情况的gcd) (The Preliminary Contest for ICPC Asia Xuzhou 2019 I.) 2019年徐州网络赛)
query Given a permutation pp of length nn, you are asked to answer mm queries, each query can be rep ...
- 计蒜客 38228. Max answer-线段树维护单调栈(The Preliminary Contest for ICPC China Nanchang National Invitational I. Max answer 南昌邀请赛网络赛) 2019ICPC南昌邀请赛网络赛
Max answer Alice has a magic array. She suggests that the value of a interval is equal to the sum of ...
- 计蒜客 Prefix Free Code(字典树+树状数组)
Consider n initial strings of lower case letters, where no initial string is a prefix of any other i ...
- 【原创】hdu 1166 敌兵布阵(线段树→单点更新,区间查询)
学习线段树的第三天...真的是没学点啥好的,又是一道水题,纯模板,我个人觉得我的线段树模板还是不错的(毕竟我第一天相当于啥都没学...找了一整天模板,对比了好几个,终于找到了自己喜欢的类型),中文题目 ...
- 计蒜客 作弊揭发者(string的应用)
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...
- 计蒜客的一道题dfs
这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...
- 计蒜客模拟赛5 D2T1 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
随机推荐
- laravel 项目表单中有csrf_token,但一直报错419错误 解决redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persi
laravel 项目表单中有csrf_token,但一直报错419错误,因为项目中使用到Redis缓存,在强制关闭Redis后出现的问题,查询laravel.log文件查找相关问题 安装redis后在 ...
- 机顶盒webview开发调试
安装node的anywhere插件 启动本地服务器后 使用chrome的DevTool-----> chrome://inspect/#devices 点击inspect 第一次需要FQ ...
- Linux基础学习笔记2-文件管理和重定向
本节内容 1)文件系统结构元素 2)创建和查看文件 3)复制.转移和删除文件 4)软和硬链接 5)三种I/O设备 6)把I/O重定向至文件 7)使用管道 文件系统和结构 文件系统 文件和目录被组织成一 ...
- python学习笔记(5-1)-基本数据类型-字符串类型及操作
五.字符串处理函数 len(x):字符串x的长度.如len("12345")结果为5 str(x):任意类型x所对应的字符串形式. >>> str(123) ...
- Postman & API
Postman & API https://www.getpostman.com/ https://www.getpostman.com/downloads/ Postman Canary h ...
- 集合之HashSet(含JDK1.8源码分析)
一.前言 我们已经分析了List接口下的ArrayList和LinkedList,以及Map接口下的HashMap.LinkedHashMap.TreeMap,接下来看的是Set接口下HashSet和 ...
- SQL Server中的完全连接(full join)
一.建库和建表 create database scort use scort create table emp ( empno int primary key, ename ), sal int, ...
- 我对领域驱动设计(DDD)的学习成果
领域驱动设计之领域模型 2004年Eric Evans发表Domain-Driven Design – Tackling Complexity in the Heart of Software (领域 ...
- 轻量级浏览器Midori
导读 这是一个对再次回归的轻量级.快速.开源的 Web 浏览器 Midori 的快速回顾. 如果你正在寻找一款轻量级网络浏览器替代品,请试试 Midori. Midori是一款开源的网络浏览器,它更注 ...
- .net MVC 访问404
MVC 项目访问总是404 有几种情况: 1 地址打错了. 2 controller/action 但是action方法含有[ActionName("Index")] 重命名了. ...