POJ 3264 Balanced Lineup(RMQ)

原创 2016年05月30日 12:47:35

题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=27676#problem/A

代码:

#include<stdio.h>
#include<string.h>
#include<vector>
#include<algorithm>
const int maxn=50000+5;
int dmaxn[maxn][20];
int dminn[maxn][20];
using namespace std;
void RMQ_init(const vector<int>& A)
{
    int n=A.size();
    for(int i=0;i<n;i++)dmaxn[i][0]=A[i];
    for(int j=1;(1<<j)<=n;j++)
    {
        for(int i=0;i+(1<<j)-1<n;i++)
        {
            dmaxn[i][j]=max(dmaxn[i][j-1],dmaxn[i+(1<<(j-1))][j-1]);
        }
    }
    n=A.size();
    for(int i=0;i<n;i++)dminn[i][0]=A[i];
    for(int j=1;(1<<j)<=n;j++)
    {
        for(int i=0;i+(1<<j)-1<n;i++)
        {
            dminn[i][j]=min(dminn[i][j-1],dminn[i+(1<<(j-1))][j-1]);
        }
    }
}
int RMQ(int L,int R)
{
    int k=0;
    while(1<<(k+1)<=R-L+1) k++;
    return max(dmaxn[L][k],dmaxn[R-(1<<k)+1][k])-min(dminn[L][k],dminn[R-(1<<k)+1][k]);
}
int main()
{
    int n,q;
    scanf("%d%d",&n,&q);
    vector<int>k;
    for(int i=0;i<n;i++)
    {
        int x;
        scanf("%d",&x);
        k.push_back(x);
    }
    RMQ_init(k);
    for(int i=0;i<q;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        printf("%d\n",RMQ(x-1,y-1));
    }
}

相关文章推荐

poj 3264 -Balanced Lineup (RMQ与线段树两种做法)

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

poj 3264 Balanced Lineup(RMQ求区间最值)

Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 29631   Accepted:...
  • WEYuLi
  • WEYuLi
  • 2013年09月27日 14:11
  • 490

POJ-3264 Balanced Lineup【RMQ】

题目链接:http://poj.org/problem?id=3264 题目大意: 一个农夫有N头牛,每头牛的高度不同,我们需要找出最高的牛和最低的牛的高度差。 解题思路: 我是用RMQ写的。...

RMQ的ST算法学习小记 Poj 3264 Balanced Lineup

RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j 主要方法及复杂度(处理复杂度和查询复杂度)如下: 1.线...

POJ 3264 Balanced Lineup (RMQ)

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

poj 3264 Balanced Lineup (RMQ))

Balanced Lineup Time Limit:5000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit ...

线段树 ST算法 RMQ poj 3264 Balanced Lineup 解题报告

线段树 ST算法 RMQ poj 3264 Balanced Lineup 解题报告

poj 3264 Balanced Lineup (简单 RMQ )

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

POJ 3264 Balanced Lineup (区间最值 RMQ模板/线段树)

题目地址:点击打开链接 区间最值查询,RMQ和线段树都可以。 RMQ代码: #include #include #include #include using namespace std; c...
  • CillyB
  • CillyB
  • 2017年03月15日 23:29
  • 144

poj 3264 Balanced Lineup(RMQ线段树)

http://poj.org/problem?id=3264 题意:输入n个数,有m个询问,每个询问输入l,r,求区间[ l , r ]之间最大数与最小数之差。 思路: 我用的线段树过的,节点增加两个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 3264 Balanced Lineup(RMQ)
举报原因:
原因补充:

(最多只允许输入30个字)