BZOJ 1699 [Usaco2007 Jan]Balanced Lineup排队 线段树
题意:链接
方法:线段树
解析:
题意即题解。
多次询问区间最大值与最小值的差。显然直接上线段树或者rmq维护区间最值就可以。
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 50010
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define pa pair<int,int>
using namespace std;
int n,q;
int ma[N<<2],mi[N<<2],dis[N<<2];
void init()
{
    memset(ma,-1,sizeof(ma));
    memset(mi,0x3f,sizeof(mi));
}
void pushup(int rt)
{
    ma[rt]=max(ma[rt<<1],ma[rt<<1|1]);
    mi[rt]=min(mi[rt<<1],mi[rt<<1|1]);
}
void build(int l,int r,int rt)
{
    if(l==r)
    {
        int x;
        scanf("%d",&x);
        ma[rt]=mi[rt]=x;
        return;
    }
    int mid=(l+r)>>1;
    build(lson),build(rson);
    pushup(rt);
}
pa query(int L,int R,int l,int r,int rt)
{
    pa ret;
    ret.first=-1,ret.second=0x3f3f3f3f;
    if(L<=l&&r<=R)
    {
        pa p;
        p.first=ma[rt],p.second=mi[rt];
        return p;
    }
    int mid=(l+r)>>1;
    if(L<=mid)
    {
        pa tmp=query(L,R,lson);
        ret.first=max(ret.first,tmp.first),ret.second=min(ret.second,tmp.second);
    }
    if(R>mid)
    {
        pa tmp=query(L,R,rson);
        ret.first=max(ret.first,tmp.first),ret.second=min(ret.second,tmp.second);
    }
    return ret;
}
int main()
{
    init();
    scanf("%d%d",&n,&q);
    build(1,n,1);
    for(int i=1;i<=q;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        pa tmp=query(x,y,1,n,1);
        printf("%d\n",tmp.first-tmp.second);
    }
}
BZOJ 1699 [Usaco2007 Jan]Balanced Lineup排队 线段树的更多相关文章
- BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队
		
1699: [Usaco2007 Jan]Balanced Lineup排队 Description 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. ...
 - BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队( RMQ )
		
RMQ.. ------------------------------------------------------------------------------- #include<cs ...
 - bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队 分块
		
1699: [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec Memory Limit: 64 MB Description 每天,农夫 John ...
 - bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队【st表||线段树】
		
要求区间取min和max,可以用st表或线段树维护 st表 #include<iostream> #include<cstdio> using namespace std; c ...
 - ST表 || RMQ问题 || BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队 || Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup
		
题面:P2880 [USACO07JAN]平衡的阵容Balanced Lineup 题解: ST表板子 代码: #include<cstdio> #include<cstring&g ...
 - BZOJ1699: [Usaco2007 Jan]Balanced Lineup排队 - 线段树
		
description 查询区间最大和最小 题解 线段树 愉悦身心啊 代码 #include<cstring> #include<cstdio> #include<alg ...
 - 【BZOJ】1699 [Usaco2007 Jan]Balanced Lineup排队
		
[算法]线段树 #include<cstdio> #include<cctype> #include<algorithm> using namespace std; ...
 - 【BZOJ】1699: [Usaco2007 Jan]Balanced Lineup排队(rmq/树状数组)
		
http://www.lydsy.com/JudgeOnline/problem.php?id=1699 我是用树状数组做的..rmq的st的话我就不敲了.. #include <cstdio& ...
 - BZOJ1699: [Usaco2007 Jan]Balanced Lineup排队
		
1699: [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 933 Solved: 56 ...
 
随机推荐
- FreeNX
			
freenx 在Linux下,我们最常使用的远程管理工具是ssh客户端,比如putty.SecureCRT等,但是ssh只提供字符界面的操作方式,有时我们需要图形界面的操作,在Linux下支持图形界面 ...
 - 指示函数(indicator function) 的作用
			
1. counter 指示函数常用于次数(满足某一断言或条件)的统计: 2. 二维的离散指示函数 ⇒ assignment solution xij∈{0,1},∑jxij=1 ∑jxij=1:行和为 ...
 - 支持10W高并发请求的IIS Web服务器常用设置
			
支持高并发的IIS Web服务器常用设置 适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0 适用的Windows版本:Windows Server 2008, Windows ...
 - 40.lombok在IntelliJ IDEA下的使用
			
转自:https://www.cnblogs.com/yjmyzz/p/lombok-with-intellij-idea.html lombok是一款可以精减java代码.提升开发人员生产效率的辅助 ...
 - php网站修改为https后curl报错301
			
今日测试项目时需调用post模拟传参测试接口是否可用,但返回报错信息(301永久迁移),在网上搜寻解决办法无果,最后发现只要将跳转地址修改为https://+url的形式就可以了
 - (转) 如何取消Linux下,vi中显示的^M符号
			
转自:http://www.cnblogs.com/dkblog/archive/2012/02/03/2337187.html [背景知识] ^M 是ascii中的'\r', 回车符,是16进制的0 ...
 - datetime小练习
			
题目: 1.计算你的生日比如近30年来(1990-2019),每年的生日是星期几,统计一下星期几出现的次数比较多2,生日提醒,距离生日还有几天 # !/usr/bin/env python # -*- ...
 - leetCode 103.Binary Tree Zigzag Level Order Traversal (二叉树Z字形水平序) 解题思路和方法
			
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...
 - Altium Designer布局移动原件的问题
 - springboot集成shiro 实现权限控制(转)
			
shiro apache shiro 是一个轻量级的身份验证与授权框架,与spring security 相比较,简单易用,灵活性高,springboot本身是提供了对security的支持,毕竟是自 ...