建两颗线段树分别存最大和最小值,模板题~

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1e6+;
struct node {
int l;
int r;
int sum;
}segTree1[maxn*],segTree2[maxn*];
int a[maxn];
int N;
int Q;
int x,y;
void build1 (int i,int l,int r) {
segTree1[i].l=l;
segTree1[i].r=r;
if (l==r) {
segTree1[i].sum=a[l];
return;
}
int mid=(l+r)>>;
build1(i<<,l,mid);
build1(i<<|,mid+,r);
segTree1[i].sum=max(segTree1[i<<].sum,segTree1[i<<|].sum);
}
int query1 (int i,int l,int r) {
if (l==segTree1[i].l&&r==segTree1[i].r) return segTree1[i].sum;
int mid=(segTree1[i].l+segTree1[i].r)>>;
if (r<=mid) return query1(i<<,l,r);
else if (l>mid) return query1(i<<|,l,r);
else return max(query1(i<<,l,mid),query1(i<<|,mid+,r));
}
void build2 (int i,int l,int r) {
segTree2[i].l=l;
segTree2[i].r=r;
if (l==r) {
segTree2[i].sum=a[l];
return;
}
int mid=(l+r)>>;
build2(i<<,l,mid);
build2(i<<|,mid+,r);
segTree2[i].sum=min(segTree2[i<<].sum,segTree2[i<<|].sum);
}
int query2 (int i,int l,int r) {
if (l==segTree2[i].l&&r==segTree2[i].r) return segTree2[i].sum;
int mid=(segTree2[i].l+segTree2[i].r)>>;
if (r<=mid) return query2(i<<,l,r);
else if (l>mid) return query2(i<<|,l,r);
else return min(query2(i<<,l,mid),query2(i<<|,mid+,r));
}
int main () {
scanf ("%d %d",&N,&Q);
for (int i=;i<=N;i++) scanf ("%d",&a[i]);
build1(,,N);
build2(,,N);
for (int i=;i<Q;i++) {
scanf ("%d %d",&x,&y);
printf ("%d\n",query1(,x,y)-query2(,x,y));
}
return ;
}

POJ3264 Balances Lineup的更多相关文章

  1. POJ3264 Balanced Lineup —— 线段树单点更新 区间最大最小值

    题目链接:https://vjudge.net/problem/POJ-3264 For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000 ...

  2. poj3264 - Balanced Lineup(RMQ_ST)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 45243   Accepted: 21240 ...

  3. POJ3264 Balanced Lineup

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 44720   Accepted: 20995 ...

  4. poj3264 balanced lineup【线段树】

    For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...

  5. POJ3264 Balanced Lineup 【线段树】+【单点更新】

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 32778   Accepted: 15425 ...

  6. kuangbin专题七 POJ3264 Balanced Lineup (线段树最大最小)

    For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...

  7. poj3264 Balanced Lineup(树状数组)

    题目传送门 Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 64655   Accepted: ...

  8. POJ-3264 Balanced Lineup(区间最值,线段树,RMQ)

    http://poj.org/problem?id=3264 Time Limit: 5000MS     Memory Limit: 65536K Description For the daily ...

  9. POJ3264 Balanced Lineup [RMQ模板]

    题意:有n头牛,输入他们的身高,求某区间身高的极值的差(max-min), 用RMQ模板,同时构造求极大值和极小值的两个数组. //poj3264 #include <iostream> ...

随机推荐

  1. 需要再次删除清空部署才能用rancher部署成功的是docker有问题

    需要再次删除清空部署才能用rancher部署成功的是docker有问题 待办 可以解释为什么一定要用特定的docker版本

  2. 数位DP 不要62

    数位DP的问法是从某个数到某个数的区间里,求出满足题目要求的个数: 如本题所说的不要62和4,就是求出这个区间内,满足这一条件的数: 比如问 6 199的这个区间内满足条件的数,那么就求出1到199满 ...

  3. response下载csv文件内容乱码问题

    response下载csv文件内容乱码问题 解决办法:在输出流语句第一行输出 out.write(new byte[]{(byte)0xEF, (byte)0xBB, (byte)0xBF}); Se ...

  4. linux php 扩展安装

    phpize./configure --with-php-config=/usr/bin/php-config make && make install

  5. JarvisOJ - Writeup(5.31更新)

    此篇用来记录我在jarivsOJ上的一些题解,只给解题思路,不放flag Misc 0x01 You Need Python(300) 题目有两个文件,一个py文件,另一个是经过编码的key 文件ke ...

  6. 【网易官方】极客战记(codecombat)攻略-地牢-循环又循环

    关卡连接: https://codecombat.163.com/play/level/loop-da-loop 循环真是救命恩人! 简介: 你只需要 一个 while true循环 加上 4 条语句 ...

  7. 吴裕雄 python 机器学习——多维缩放降维MDS模型

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from sklearn import datas ...

  8. 手动搭建的react环境中,关于图片引入的问题

    react手动搭建的环境,require引进来图片不显示,网页src显示[object module] 解决方案 (1)import引进图片 import anli from './img/anli. ...

  9. Python 多任务(进程) day1(2)

    进程和线程的简单区别: 功能:进程:能够完成多任务,比如 在一台电脑上能够运行多个QQ一份资源有一个执行的剪头,有多份资源就可以执行多个语句线程:能够完成多任务,比如 在一个QQ中的多个聊天窗口一份资 ...

  10. Python 多任务(线程) day1

    多任务就是可以让一台电脑同时执行多个命令. 以前的单核cpu是怎么做到同时执行多个命令的?(时间片轮转) ——其实以前的单核CPU是让操作系统交替执行命令,每个任务执行0.01秒,这样看起来就像是在同 ...