Pku oj 3264 Balanced Lineup(RMQ)

Balanced Lineup
Time Limit: 5000MS Memory Limit: 65536K
Total Submissions: 46162 Accepted: 21674
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 decides to organize a game of Ultimate Frisbee with some of the cows. To keep things simple, he will take a contiguous range of cows from the milking lineup to play the game. However, for all the cows to have fun they should not differ too much in height.

Farmer John has made a 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 to determine the difference in height between the shortest and the tallest cow in the group.

Input

Line 1: Two space-separated integers,  N and  Q
Lines 2.. N+1: Line  i+1 contains 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 tallest and shortest cow in the range.

Sample Input

6 3
1
7
3
4
2
5
1 5
4 6
2 2

Sample Output

6
3
0
线段树也可以过,不过比较慢,ST算法要比线段树快
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;

const int maxn = 50005;
int dpmax[maxn][20];
int dpmin[maxn][20];
int a[maxn];
int n,m;

void InitRmq()
{
    for(int i=0;i<n;i++)
    {
        dpmax[i][0] = a[i];
        dpmin[i][0] = a[i];
    }

    for(int j=1;(1<<j)<=n;j++)
    {
        for(int i=0;i+(1<<j)-1<n;i++)
        {
            dpmax[i][j] = max(dpmax[i][j-1],dpmax[i+(1<<(j-1))][j-1]);
            dpmin[i][j] = min(dpmin[i][j-1],dpmin[i+(1<<(j-1))][j-1]);
        }
    }
}

int getMax(int x,int y)
{
    int k = (int)(log(y-x+1.0)/log(2.0));
    return max(dpmax[x][k],dpmax[y-(1<<k)+1][k]);
}

int getMin(int x,int y)
{
    int k = (int)(log(y-x+1.0)/log(2.0));
    return min(dpmin[x][k],dpmin[y-(1<<k)+1][k]);
}

int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        InitRmq();
        for(int i=0;i<m;i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            printf("%d\n",getMax(x-1,y-1)-getMin(x-1,y-1));
        }
    }
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
### 回答1: PKU VehicleID数据集是由北京大学智能交通与多媒体实验室提供的一个用于车辆识别的图像数据库。该数据集包含了车辆在不同环境、不同拍摄条件下的图像,旨在用于车辆相关研究的数据训练和测试。 PKU VehicleID数据集收集了超过8万辆车的图像,涵盖了2000多个车型和16000多个车例。这些图像是在不同的拍摄条件下捕捉到的,包括不同的光照、天气、角度和距离。这使得该数据集在车辆识别和相关研究领域具有较高的多样性和可用性。 PKU VehicleID数据集不仅提供了车辆图像,还包含了车辆的标注信息,如车辆类型、颜色、品牌等。这些标注信息为研究者提供了更多的可用数据,可以辅助他们进行车辆特征识别、车辆分类等相关研究。 PKU VehicleID数据集可以广泛应用于车辆识别、车辆检测、交通监控等领域的研究和实践中。通过利用该数据集,研究者可以进行车辆模型的建立与识别、车辆行为的分析与预测等工作,从而为智能交通和城市管理提供更好的技术支持和解决方案。 综上所述,PKU VehicleID数据集是一个丰富的车辆图像数据库,它提供了大量的车辆图像和标注信息,为车辆识别和相关研究领域的研究者提供了重要的资源和工具。通过该数据集的应用,我们可以更好地理解和研究车辆特征识别、车辆分类等问题,为智能交通和城市管理带来更多的创新和进步。 ### 回答2: PKU VehicleID数据集是由北京大学人工智能与自动化研究所于2016年发布的一个车辆检测和识别的数据集。这个数据集主要包含了来自北京市道路监控系统的车辆图像和相关的车辆属性信息。 PKU VehicleID数据集的特点主要有以下几点。首先,该数据集包含了非常大量的车辆图像,总计约50万张,涵盖了丰富的场景和车型样本。其次,这些图像都是以野外真实道路监控视频截取得到的,具有较高的真实性和复杂性。此外,数据集中的每一辆车都被分配了一个唯一的ID号码,用于标识和跟踪车辆。最后,PKU VehicleID数据集还提供了诸如车辆类型、颜色、品牌等属性信息,方便进行车辆属性识别和分类任务。 PKU VehicleID数据集在车辆检测、跟踪和识别领域有着广泛的应用价值。通过利用这个数据集,可以开展车辆检测算法的研究和性能评估。同时,也可以进行车辆属性识别、车型分类等应用任务的研究。这个数据集的发布对于提升车辆智能监控和交通管理系统的性能具有重要意义。此外,PKU VehicleID数据集还可以为自动驾驶、交通安全和交通流量分析等领域的研究提供有价值的实验数据基础。总之,PKU VehicleID数据集是一个丰富而有用的资源,为车辆相关研究提供了有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值