The Water Problem RMQ区间最大值
来源:互联网 发布:免费下载音乐的软件 编辑:程序博客网 时间:2024/06/10 05:42
The Water Problem
Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2249 Accepted Submission(s): 1757
Problem Description
In Land waterless, water is a very limited resource. People always fight for the biggest source of water. Given a sequence of water sources witha1,a2,a3,...,an representing the size of the water source. Given a set of queries each containing2 integers l and r , please find out the biggest water source between al and ar .
Input
First you are given an integerT(T≤10) indicating the number of test cases. For each test case, there is a number n(0≤n≤1000) on a line representing the number of water sources. n integers follow, respectively a1,a2,a3,...,an , and each integer is in {1,...,106} . On the next line, there is a number q(0≤q≤1000) representing the number of queries. After that, there will be q lines with two integers l and r(1≤l≤r≤n) indicating the range of which you should find out the biggest water source.
Output
For each query, output an integer representing the size of the biggest water source.
Sample Input
3110011 151 2 3 4 551 21 32 43 43 531 999999 141 11 22 33 3
Sample Output
1002344519999999999991
Source
2015 ACM/ICPC Asia Regional Changchun Online
Recommend
hujie
区间最大值 RMQ算法预处理即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
int dp[50010][50];
void rmq()
{
for(int j=1; (1<<j)<=n; j++)
{
for(int i=1; i+(1<<j)-1<=n; i++)
{
dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
}
}
}
int rmq1(int l,int r)
{
int k=0;
while((1<<(k+1))<=r-l+1) k++;
return max(dp[l][k],dp[r-(1<<k)+1][k]);
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int j=1; j<=n; j++)
{
scanf("%d",&dp[j][0]);
}
rmq();
int q;
scanf("%d",&q);
while(q--)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",rmq1(a,b));
}
}
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
int dp[50010][50];
void rmq()
{
for(int j=1; (1<<j)<=n; j++)
{
for(int i=1; i+(1<<j)-1<=n; i++)
{
dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
}
}
}
int rmq1(int l,int r)
{
int k=0;
while((1<<(k+1))<=r-l+1) k++;
return max(dp[l][k],dp[r-(1<<k)+1][k]);
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int j=1; j<=n; j++)
{
scanf("%d",&dp[j][0]);
}
rmq();
int q;
scanf("%d",&q);
while(q--)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",rmq1(a,b));
}
}
return 0;
}
人一我百!人十我万!永不放弃~~~怀着自信的心,去追逐梦想。
阅读全文
0 0
- The Water Problem RMQ区间最大值
- HDU 5443 The Water Problem(RMQ 求区间最大值)
- hdu 5443 The Water Problem(RMQ区间最值)
- The Water Problem(RMQ)
- hdoj 5443 The Water Problem 【RMQ】
- HDU 5443 The Water Problem RMQ/暴力
- HDU 5443 The Water Problem RMQ
- HDU 5443 The Water Problem【RMQ水题】
- HDU 5443 The Water Problem [rmq]
- The Water Problem(取最大值)
- HDU 5443 The Water Problem(水题 找区间最大值)——2015 ACM/ICPC Asia Regional Changchun Online
- RMQ(区间最大值)
- hdu-5443-The Water Problem -裸的RMQ线段树
- HDU 5443 The Water Problem(RMQ)2014 多校
- HDOJ 5443 The Water Problem 【RMQ 模板题】
- hdu 5443 water problem (RMQ)
- hdu5443 The Water Problem
- HDOJ 5443 The Water Problem(线段树区间最值)(长春网络赛)
- Hive 笔记异常java.sql.SQLException: Unable to open a test connection to the given database.
- 专业术语翻译
- winform 控件中显示实时时间
- UGUI 学习笔记 4 Image
- Monkey脚本检测内存泄漏学习小记
- The Water Problem RMQ区间最大值
- Fragment
- “天鸽”袭港遇天鸽被沽空,最有力的证据还是业绩
- mysql 使用CONCAT函数、group_concat函数,查询的结果为bolob类型解决办法
- linux打补丁和git打patch方法
- Android 检测应用中的UI卡顿的工具
- 网狐棋牌6603棋牌商业源码+详细架设教程!
- C#并发操作
- C++学习笔记(更新……)