zoukankan      html  css  js  c++  java
  • poj 3264

    Balanced Lineup

    Time Limit: 5000MS

     

    Memory Limit: 65536K

    Total Submissions: 44506

     

    Accepted: 20902

    Case Time Limit: 2000MS

    Description

    For the dailymilking, Farmer John's N cows (1 ≤ N ≤ 50,000)always line up in the same order. One day Farmer John decides to organize agame of Ultimate Frisbee with some of the cows. To keep things simple, he willtake a contiguous(连续的) range of cows from the milking lineup(阵容) to play the game. However, for all the cowsto have fun they should not differ too much in height.

    Farmer John has madea list of Q (1 ≤ Q ≤ 200,000) potential(潜在的) groups of cows and their heights (1 ≤ height ≤ 1,000,000). For each group, he wants your help todetermine the difference in height between the shortest and the tallest cow inthe group.

    Input

    Line 1:Two space-separated integers(整数), N and Q
    Lines 2..N+1: Line i+1contains a single integer(整数) that is the height of cow i 
    Lines N+2..N+Q+1:Two integers A and B (1 ≤ A ≤ B ≤ N),representing the range of cows from A to B inclusive.

    Output

    Lines 1..Q:Each line contains a single integer(整数) that is a response to a reply and indicates(表明) the difference in height between the tallestand shortest cow in the range.

    SampleInput

    6 3

    1

    7

    3

    4

    2

    5

    1 5

    4 6

    2 2

    SampleOutput

    6

    3

    0

    Source

    USACO2007 January Silver

    线段树解法

    Problem: 3264

    User: ksq2013

    Memory: 1692K

    Time: 3891MS

    Language: G++

    Result: Accepted

     

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    using namespace std;
    int n,q,_max[200001],_min[200001];
    void update(int s,int t,int k,int add,int p)
    {
    	if(!(s^t)){
    		_max[k]=_min[k]=p;
    		return;
    	}int m=(s+t)>>1;
    	if(add<=m)update(s,m,k<<1,add,p);
    	else update(m+1,t,k<<1|1,add,p);
    	_max[k]=max(_max[k<<1],_max[k<<1|1]);
    	_min[k]=min(_min[k<<1],_min[k<<1|1]);
    }
    int query1(int s,int t,int k,int l,int r)
    {
    	if(l<=s&&t<=r)return _max[k];
    	int m=(s+t)>>1,res1=0,res2=0;
    	if(l<=m)res1=query1(s,m,k<<1,l,r);
    	if(m<r)res2=query1(m+1,t,k<<1|1,l,r);
    	return max(res1,res2);
    }
    int query2(int s,int t,int k,int l,int r)
    {
    	if(l<=s&&t<=r)return _min[k];
    	int m=(s+t)>>1,res1=0x7fffffff,res2=0x7fffffff;
    	if(l<=m)res1=query2(s,m,k<<1,l,r);
    	if(m<r)res2=query2(m+1,t,k<<1|1,l,r);
    	return min(res1,res2);
    }
    int main()
    {
    	scanf("%d%d",&n,&q);
    	for(int i=1;i<=n;i++){
    		int x;
    		scanf("%d",&x);
    		update(1,n,1,i,x);
    	}
    	for(int i=1;i<=q;i++){
    		int a,b;
    		scanf("%d%d",&a,&b);
    		printf("%d
    ",query1(1,n,1,a,b)-query2(1,n,1,a,b));
    	}
    	return 0;
    }



  • 相关阅读:
    devDependencies和dependencies的版本写法
    dependencies 与 devDependencies 的区别
    Java +selenium Navigation接口介绍
    Java + selenium window()接口方法介绍
    Java + selenium Timeout接口用法介绍
    Java + selenium 启动谷歌浏览器
    selenium 3 下载 + Java使用
    Rsync 实现服务器文件的同步——服务端的安装配置
    selenium V1.0和V2.0差别对比
    PHP的安装配置
  • 原文地址:https://www.cnblogs.com/keshuqi/p/5957792.html
Copyright © 2011-2022 走看看