【原创】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 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
随机推荐
- 【转】Word之表格、图片的题注(抬头)自动编号
问:word中的表格怎么自动插入题注(即表头的编号自动编号)? 答: 1首先搞清楚自动编号的意思.自动插入题注的意思是,在你在word中新建或者复制一个word表格的时候,表头的编号就自动生成了,而不 ...
- JavaScript对象访问器属性
对象访问器就是setter和getter,他们的作用就是 提供另外一种方法来获取或者设置对象的属性值, 并且在获取和设置的时候,可以用一定的其他操作. 看下面代码: <script> va ...
- Linux reboot与init 6区别
Reboot与init 6的区别 - flyingcloud_2008的专栏 - CSDN博客https://blog.csdn.net/flyingcloud_2008/article/detail ...
- Druid Monitor开启登录界面
<!-- druid --> <filter> <filter-name>druidWebStatFilter</filter-name> <fi ...
- react插件包
react-scoped-style support ie8,ie8+,chrome,firefox,safari does not support css priority (just apply ...
- asp.net core发布到linux
在发布到linux的过程中出现两个问题现在总结一下: 我的虚拟机是安装到本机上面的,所以,应该在虚拟机的设置里面设置端口映射.具体设置如下: 选择vm上方的编辑 在弹出的框中选择VMnet8,点击下方 ...
- MHA高可用及读写分离
一.MHA简介 二.工作流程 三.MHA架构图 四.MHA工具介绍 五.基于GTID的主从复制 六.部署MHA 七.配置VIP漂移 八.配置binlog-server 九.MySQL中间件Atlas
- nfs+keepalived高可用
1台nfs主被服务器都下载nfs.keepalived yum install nfs-utils rpcbind keepalived -y 2台nfs服务器nfs挂载目录及配置必须相同 3.在主n ...
- Python自动化运维ansible从入门到精通
1. 下载安装 在windows下安装ansible:
- Learning to Rank for IR的评价指标—MAP,NDCG,MRR
转自: https://www.cnblogs.com/eyeszjwang/articles/2368087.html MAP(Mean Average Precision):单个主题的平均准确率是 ...