Balanced Lineup

RMQ模板题

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 const int N=50001,M=30;
 5 int n,q,h[N],minl[N][M],maxl[N][M];
 6 int RMQ(int,int),min(int,int),max(int,int);
 7 int main(){
 8     int l,r,tmp;
 9     scanf("%d %d",&n,&q);
10     for (int i=1;i<=n;i++){
11         scanf("%d",&tmp);
12         minl[i][0]=maxl[i][0]=tmp;
13     }
14     for (int j=1;(1<<j)<=n;j++)
15         for (int i=1;i+j-1<=n;i++){
16             minl[i][j]=min(minl[i][j-1],minl[i+(1<<(j-1))][j-1]);
17             maxl[i][j]=max(maxl[i][j-1],maxl[i+(1<<(j-1))][j-1]);
18         }
19     for (int i=1;i<=q;i++){
20         scanf("%d %d",&l,&r);
21         printf("%d\n",RMQ(l,r));
22     }
23     return 0;
24 }
25 int min(int x,int y){
26     return x<y?x:y;
27 }
28 int max(int x,int y){
29     return x>y?x:y;
30 }
31 int RMQ(int l,int r){
32     int k=0;
33     while ((1<<(k+1)) <=r-l+1) k++;
34     return max(maxl[l][k],maxl[r-(1<<k)+1][k])-min(minl[l][k],minl[r-(1<<k)+1][k]);
35 }

STD

时间: 2024-07-30 06:48:24

Balanced Lineup的相关文章

poj 3264 Balanced Lineup RMQ线段树实现

Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 36613   Accepted: 17141 Case Time Limit: 2000MS Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer Joh

bzoj 1637: [Usaco2007 Mar]Balanced Lineup

1637: [Usaco2007 Mar]Balanced Lineup Time Limit: 5 Sec  Memory Limit: 64 MB Description Farmer John 决定给他的奶牛们照一张合影,他让 N (1 ≤ N ≤ 50,000) 头奶牛站成一条直线,每头牛都有它的坐标(范围: 0..1,000,000,000)和种族(0或1). 一直以来 Farmer John 总是喜欢做一些非凡的事,当然这次照相也不例外.他只给一部分牛照相,并且这一组牛的阵容必须是"

bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队 分块

1699: [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec  Memory Limit: 64 MB Description 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连续的牛来进行比赛. 但是为了避免水平悬殊,牛的身高不应该相差太大. John 准备了Q (1 <= Q <= 180,000) 个可能的牛的

poj3264 Balanced Lineup(求区间的最大值与最小值之差)

Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 37869   Accepted: 17751 Case Time Limit: 2000MS Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer Joh

POJ3264 Balanced Lineup 线段树 RMQ ST算法应用

Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 36813 Accepted: 17237 Case Time Limit: 2000MS Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John de

poj 3264 Balanced Lineup

题目链接:http://poj.org/problem?id=3264 题目大意:就是给你一串数,问你最大数和最小数的差值....... 思路:最基本的线段树,只需要建树和查询,修改都省啦,但是查询要写两个,一个查询最大值,一个查询最小值......然后就能AC掉.....但是话说poj把它分类到RMQ中.... code: #include<cstdio> #include<cmath> #include<algorithm> #include<iostream

POJ3264 Balanced Lineup RMQ 线段树

求区间内最大数和最小数的差,用两棵线段树,一个维护区间最大值,一个维护区间最小值. #include <stdio.h> #include <vector> #include <math.h> #include <string.h> #include <string> #include <iostream> #include <queue> #include <list> #include <algori

bzoj1702[Usaco2007 Mar]Gold Balanced Lineup 平衡的队列*

bzoj1702[Usaco2007 Mar]Gold Balanced Lineup 平衡的队列 题意: N头牛,一共K种特色.每头牛有多种特色.[i,j]段被称为balanced当且仅当K种特色在[i,j]内拥有次数相同.求最大的[i,j]段长度.n≤100000,k≤30. 题解: 得到式子:a[i][l]-a[j][l]=a[i][l-1]-a[j][l-1],l在2..k之间,移项得a[i][l]-a[i][l-1]=a[j][l]-a[j][l-1],l在2..k之间,故可以定义一个

bzoj1637[Usaco2007 Mar]Balanced Lineup*

bzoj1637[Usaco2007 Mar]Balanced Lineup 题意: n头牛,第i头牛位置为ai,种族为bi(只能为0,1),求一个区间(按数轴位置),使得区间两端牛距离差最大且两种种族牛数相等.n≤50000. 题解: 按位置排序.然后利用前缀和sum[i][0]-sum[j-1][0]=sum[i][1]-sum[j-1][1],sum[i][0]-sum[i][1]=sum[j-1][0]-sum[j-1][1],故用个set维护sum[i][0]-sum[i][1]的值,

POJ-3264 Balanced Lineup(线段树)

Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 47042   Accepted: 22071 Case Time Limit: 2000MS Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer Joh