思路:

  两种实现方法: (1)用链表(2)用数组。

 #include <bits/stdc++.h>
using namespace std;
int n, q, L, R, op, P, W; struct node
{
int v;
node *ll,*rr;
}; node* create() //创建节点
{
node *tmp=new(node);
tmp->v=-;
tmp->ll=tmp->rr=;
return tmp;
} node* init_tree(int l,int r) //初始化树
{
node *tmp=create();
if(l==r)
{
scanf("%d",&tmp->v);
return tmp;
}
tmp->ll=init_tree(l,(r+l)/);
tmp->rr=init_tree((r+l)/+,r);
tmp->v= tmp->ll->v < tmp->rr->v?tmp->ll->v:tmp->rr->v;
return tmp;
} int query(int l,int r,int LL,int RR,node *t) //查询(欲查询的左,右,区间下限,上限,根)
{
if(l==LL&&r==RR) return t->v;
int mid=((LL+RR)>>);
if(l>mid) return query(l, r, mid+, RR, t->rr);
if(r<=mid) return query(l, r, LL, mid, t->ll);
return min( query(l,mid,LL,mid,t->ll),query(mid+,r,mid+,RR,t->rr) );
} void update(int LL,int RR,node *t) //修改,深搜,搜到后一直往回改。
{
if(LL==RR)
{
t->v=W;
return ;
}
int mid=((LL+RR)>>);
int tmp;
if(P>mid) update(mid+,RR,t->rr); //要改的在右边
else update(LL,mid,t->ll);
t->v=min(t->ll->v,t->rr->v);
} int main()
{
freopen("input.txt", "r", stdin);
cin>>n;
node *tree=init_tree(,n);
cin>>q;
for(int i=; i<q; i++)
{
scanf("%d",&op);
if(op) //修改
{
scanf("%d%d",&P,&W);
update(,n,tree);
}
else //查询
{
scanf("%d%d",&L,&R);
printf("%d\n",query(L,R,,n,tree) );
}
}
return ;
}

AC代码(链实现)

hihoCode r#1077 : RMQ问题再临-线段树的更多相关文章

  1. hihocode 1077 : RMQ问题再临-线段树

    #1077 : RMQ问题再临-线段树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到:小Hi给小Ho出了这样一道问题:假设整个货架上从左到右摆放了N种商品,并 ...

  2. Hihocoder #1077 : RMQ问题再临-线段树(线段树:结构体建树+更新叶子往上+查询+巧妙使用father[]+线段树数组要开大4倍 *【模板】)

    #1077 : RMQ问题再临-线段树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到:小Hi给小Ho出了这样一道问题:假设整个货架上从左到右摆放了N种商品,并 ...

  3. hihoCoder#1077 RMQ问题再临-线段树

    原题地址 终于做到线段树的题了,因为建树.更新.查询都是递归操作,所以其实挺好写的. 用数组存的树,记得MAX_NODE开成两倍叶节点数大小,否则RE啊..不要问我是怎么知道的. 代码: #inclu ...

  4. hihoCoder week19 RMQ问题再临-线段树 单点更新 区间查询

    单点更新 区间查询 #include <bits/stdc++.h> using namespace std; #define m ((l+r)/2) #define ls (rt< ...

  5. [bzoj3339]Rmq Problem||[bzoj3585]mex_线段树

    Rmq Problem bzoj-3339||mex bzoj-3585 题目大意:给定一个长度为n的数列a,多次讯问区间l,r中最小的不属于集合{$A_l,A_{l+1}...A_r$}的非负整数. ...

  6. CF803G-Periodic RMQ Problem【离散化,线段树,ST表】

    正题 题目链接:https://www.luogu.com.cn/problem/CF803G 题目大意 一个长度为\(n\)的序列\(a\)复制\(k\)份连接,要求支持 区间赋值 区间查询最小值 ...

  7. NYOJ 1012 RMQ with Shifts (线段树)

    题目链接 In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for each q ...

  8. nyoj 568——RMQ with Shifts——————【线段树单点更新、区间求最值】

    RMQ with Shifts 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述     In the traditional RMQ (Range Minimum Q ...

  9. UVA 12299 RMQ with Shifts(线段树:单点更新)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

随机推荐

  1. Ubuntu 无法登录 coursera 看视频

    修改 host 文件 sudo vim /etc/hosts 将下面的内容添加至末尾 52.84.246.72 d3c33hcgiwev3.cloudfront.net

  2. 方法名的string类型应用(补)

    string strClass = "stringConvertClass.test"; //命名空间+类名 string strMethod = "Method&quo ...

  3. Laravel中的查询构造器

    public function query(){ //新增数据 //$bool = DB::table('wd_user')->insert(['username'=>'jack']); ...

  4. (3)ASP.NET Core 服务生命周期

    1.前言 在ConfigureServices方法中的容器注册每个应用程序的服务,Asp.Core都可以为每个应用程序提供三种服务生命周期:●Transient(暂时):每次请求都会创建一个新的实例. ...

  5. Unity(1) 编辑器结构

    5个主要视图视图,未完,持续补充... 1 Project(项目) 用于显示资源 Favorites:按资源分类显示 Assets:按目录结构显示 特殊说明 Prefabs(预设),用于场景中游戏对象 ...

  6. MongoDb 安装服务 以及 安全配置

    安装MongoDb 的服务 命令如下: (cmd以管理员运行) mongod –logpath "D:\Program Files\mongodb\data\logs.txt" – ...

  7. IT兄弟连 JavaWeb教程 MVC设计模式

    MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它强制性地把应用程序的数据展示.数据处理和流程控制分开.MVC把应用程序分成3个核心模块:模型.视 ...

  8. JS实现购物车动态功能

    整理了一下当时学js写的一些案例,觉得购物车功能在一般网站比较常见且基础,现在把它整理出来,需要的小伙伴可以参考一下. 该案例购物车主要功能如下: 1. 商品单选.全选.反选功能 2. 商品添加.删除 ...

  9. shell chpasswd 命令 修改用户密码

    使用useradd 命令增加一个用户后,它默认是没有设置密码的.如果需要给用户设置或者修改密码,一般会使用passwd命名. 但是passwd命令有一个缺陷,它需要人工交互操作. 如果你是一名系统管理 ...

  10. Apollo应用相关JVM配置参数

    -Dapollo_profile=github,auth-Ddev_meta=http://localhost:8080/-Dserver.port=8070-Dspring.datasource.u ...