POJ3264 Balances Lineup
建两颗线段树分别存最大和最小值,模板题~
#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的更多相关文章
- POJ3264 Balanced Lineup —— 线段树单点更新 区间最大最小值
题目链接:https://vjudge.net/problem/POJ-3264 For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000 ...
- poj3264 - Balanced Lineup(RMQ_ST)
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 45243 Accepted: 21240 ...
- POJ3264 Balanced Lineup
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 44720 Accepted: 20995 ...
- 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 ...
- POJ3264 Balanced Lineup 【线段树】+【单点更新】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 32778 Accepted: 15425 ...
- 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 ...
- poj3264 Balanced Lineup(树状数组)
题目传送门 Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 64655 Accepted: ...
- POJ-3264 Balanced Lineup(区间最值,线段树,RMQ)
http://poj.org/problem?id=3264 Time Limit: 5000MS Memory Limit: 65536K Description For the daily ...
- POJ3264 Balanced Lineup [RMQ模板]
题意:有n头牛,输入他们的身高,求某区间身高的极值的差(max-min), 用RMQ模板,同时构造求极大值和极小值的两个数组. //poj3264 #include <iostream> ...
随机推荐
- Zeta(2) 有图版
我很早就一直想写一篇文章,跟大家聊一聊: $$\frac{1}{1^2}+\frac{1}{2^2} +\frac{1}{3^2} +\frac{1}{4^2} +\frac{1}{5^2} +\cd ...
- 智能指针和异常、 weak_ptr、unique_ptr
12.1.4智能指针和异常 1.在块中创建的动态内存,如果是由内置指针来指向这块内存,那么若是在块结束时未delete这个指针,则该内存不会被释放,若在delete之前发生异常,由于还没执行delet ...
- 题解【洛谷P2615】[NOIP2015]神奇的幻方
题目描述 幻方是一种很神奇的 \(N \times N\) 矩阵:它由数字 \(1,2,3,\cdots \cdots ,N \times N\) 构成,且每行.每列及两条对角线上的数字之和都相同. ...
- JavaScript中的 typeof,null,和undefined
typeof操作符 null 在JavaScript中null表示“什么都没有”. null是一个只有一个值的特殊类型.表示一个空对象引用. typeof null; 返回的是object 可以将nu ...
- 使用Eclipse远程调试云服务器上的微信公众项目
云服务器系统:centos 7.3 如何在Eclipse上调试我们在云服务器上的项目呢,下面介绍一下步骤: 1.因为root账号不支持远程调试,首先需要在linux上创建一个新的用户,然后用该用户 ...
- codeforces Make The Fence Great Again(dp)
题目链接:http://codeforces.com/contest/1221/problem/D 题目要求ai ! = ai-1,草纸上推理一下可以发现每一个栅栏可以升高的高度无非就是 +0,+1, ...
- Wx-mpvue开发小程序
一.准备 安装Node 安装vue-cli ( npm install --global vue-cli ) 二.创建 初始化项目 ( vue init mpvue/mpvue-quickstart ...
- Java实现Word/Pdf/TXT转html
引言: 最近公司在做一个教育培训学习及在线考试的项目,本人主要从事网络课程模块,主要做课程分类,课程,课件的创建及在线学习和统计的功能,因为课件涉及到多种类型,像视频,音频,图文,外部链接及文档类型. ...
- opencv:自适应阈值
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- 利用tensorboard将数据可视化
注:代码是网上下载的,但是找不到原始出处了,侵权则删 先写出visual类: class TF_visualizer(object): def __init__(self, dimension, ve ...