题目链接:

id=3264">http://poj.org/problem?

id=3264

这是一个单点更新的模板题,就不详解了,HDU敌兵布阵那题我有详解;链接:http://blog.csdn.net/wlxsq/article/details/46897219

#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<vector>
#include<algorithm>
#define LL long long
using namespace std;
/*
这是一个线段树单点更新的模板题。只是每一个节点存两个数据。最大值和最小值;
*/
const int inf=0xffffff0;
int MinV,MaxV;
int q,n,a,b;
struct node
{
int l,r,MinV,MaxV;
}node[200010];
void PushUp(int rt,int v) // 更新父节点;
{
node[rt].MinV=min(node[rt].MinV,v);
node[rt].MaxV=max(node[rt].MaxV,v);
}
void build(int l,int r,int rt)
{
int mid=(l+r)>>1;
node[rt].l=l;
node[rt].r=r;
node[rt].MinV=inf;
node[rt].MaxV=-inf;
if(l==r) return;
else{
build(l,mid,rt<<1);
build(mid+1,r,rt<<1|1);
}
}
void Insert(int rt,int p,int v)
{
int l=node[rt].l;
int r=node[rt].r;
if(l==r&&p==l){
node[rt].MinV=v;
node[rt].MaxV=v;
return;
}
//node[rt].MinV=min(v,node[rt].MinV);
//node[rt].MaxV=max(v,node[rt].MaxV);
int mid=(l+r)>>1;
if(p<=mid) Insert(rt<<1,p,v);
else Insert(rt<<1|1,p,v);
PushUp(rt,v);
}
void query(int l,int r,int rt)
{
if(node[rt].MaxV<=MaxV&&node[rt].MinV>=MinV) return; // 往下搜没有什么意义了,能够直接退出;
if(l==node[rt].l&&r==node[rt].r){
MinV=min(node[rt].MinV,MinV);
MaxV=max(node[rt].MaxV,MaxV);
return;
}
int mid=(node[rt].l+node[rt].r)>>1;
if(r<=mid) query(l,r,rt<<1);
else if(l>mid) query(l,r,rt<<1|1);
else{
query(l,mid,rt<<1);
query(mid+1,r,rt<<1|1);
}
}
int main()
{
while(~scanf("%d%d",&n,&q)){
build(1,n,1);
for(int i=1;i<=n;i++){
scanf("%d",&a);
Insert(1,i,a);
}
for(int i=1;i<=q;i++){
scanf("%d%d",&a,&b);
MinV=inf;
MaxV=-inf;
query(a,b,1);
printf("%d\n",MaxV-MinV);
}
}
return 0;
}

POJ-3264-Balanced Lineup-单点更新的更多相关文章

  1. Poj 3264 Balanced Lineup RMQ模板

    题目链接: Poj 3264 Balanced Lineup 题目描述: 给出一个n个数的序列,有q个查询,每次查询区间[l, r]内的最大值与最小值的绝对值. 解题思路: 很模板的RMQ模板题,在这 ...

  2. POJ 3264 Balanced Lineup 【ST表 静态RMQ】

    传送门:http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total S ...

  3. POJ - 3264——Balanced Lineup(入门线段树)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 68466   Accepted: 31752 ...

  4. poj 3264 Balanced Lineup (RMQ)

    /******************************************************* 题目: Balanced Lineup(poj 3264) 链接: http://po ...

  5. POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 53703   Accepted: 25237 ...

  6. poj 3264 Balanced Lineup 题解

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Subm ...

  7. poj 3264:Balanced Lineup(线段树,经典题)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 32820   Accepted: 15447 ...

  8. POJ 3264 Balanced Lineup 线段树 第三题

    Balanced Lineup Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line ...

  9. poj 3264 Balanced Lineup (线段树)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 42489   Accepted: 20000 ...

  10. poj 3264 Balanced Lineup(RMQ裸题)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 43168   Accepted: 20276 ...

随机推荐

  1. iOS 打印出视图中全部的子视图的名称

    使用递归: - (void)listSubviewsOfView:(UIView *)view { // Get the subviews of the view NSArray *subviews ...

  2. Wing IDE配置空格取代tab缩进+护眼背景色

    打开Wing IDE后,进入"编辑"列的"偏好设置"页面,如图1所看到的: 图1 设置用4个spaces取代tab, 如图2所看到的 图2 设置保护眼睛的绿色, ...

  3. Map (就一个json.jar)

    public static void main(String[] args) { List<Map<Integer, String>> m = new ArrayList< ...

  4. 杂项-电信:TL9000

    ylbtech-杂项-电信:TL9000 TL9000是电信业质量体系要求(书1)与质量体系法则(书2)的指南, 它包括ISO9001的所有要求,以及硬件.软件, 服务方面行业的特别要求. 这些新增要 ...

  5. C语言文件操作函数之ferror & feof & clearerr

    这些函数都是和文件读写时发生错误有关,下面一一分析: 1:ferror 原型:int ferror(FILE * fp) 作用:测试一个文件流是否被设置了错误标识符,如果是返回非 0 整数,否则返回 ...

  6. MeayunDB-高性能分布式内存数据库

    MeayunDB(www.meayun.com)是一款分布式的NoSQL列式内存数据库,由C#编写,主要为高性能,高并发,高可伸缩及大数据系统提供技术解决方案.基于MeayunDB,可以简单,快速的构 ...

  7. Caffe Batch Normalization推导

    Caffe BatchNormalization 推导 总所周知,BatchNormalization通过对数据分布进行归一化处理,从而使得网络的训练能够快速并简单,在一定程度上还能防止网络的过拟合, ...

  8. TF基础4

    模型的存储与加载 TF的API提供了两种方式来存储和加载模型: 1.生成检查点文件,扩展名.ckpt,通过在tf.train.Saver()对象上调用Saver.save()生成.包含权重和其他在程序 ...

  9. 立即调用函数(IIFE)

    定义: IIFE:立即调用的函数表达式,声明函数的同时立即调用这个函数. 语法: IIFE的常用写法:这两种写法的作用相同,只是表现形式不同而已,()只是起了自执行的作用 (function(){.. ...

  10. CentOS 7.5安装pycharm

    环境 安装环境: windows 10 Pro CentOS Linux release 7.6.1810 (Core) VMWare Workstation 15 Pro 安装图形化界面包 首先更新 ...