POJ 3264 RMQ水题
题目大意就是有很多牛。告诉你每只牛的高度。然后有很多个询问。输出该区间内的最大身高差。也就是用RMQ求最大值最小值。貌似还可以用线段树。然而,我还不会线段树。。。。。T_T
可能是太多组数据了。cin和cout会TLE。换成scanf和printf就顺当的AC了。。。。啦啦啦、
RMQ还是只会用模板。。T_T
附代码:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
#define maxn 51000
#define maxm 20
using namespace std;
int dpmax[maxn][maxm];
int dpmin[maxn][maxm];
int n, q;
int main()
{
while(cin >> n >> q)
{
for (int i=1; i<=n; ++i) // 下标从开始。初始化dpmax和dpmin数组。
{
// cin >> dpmax[i][0];
scanf("%d", &dpmax[i][0]);
dpmin[i][0] = dpmax[i][0];
}
int end_j = log(n + 0.0) / log(2.0); // 预处理。计算每个区间的最大值和最小值。所以询问非常快。
for (int j=1; j<=end_j; ++j)
{
int end_i = n + 1 - (1 << j); // dpmax[i][j] 表示从第 i 个数开始。长度为1<<j的区间。包括第i个数。
for (int i=1; i<=end_i; ++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]);
}
}
for (int i=0; i<q; ++i)
{
int st, ed;
cin >> st >> ed;
int k = log(ed - st + 1.0) / log(2.0); //需要讨论的最大区间长度。
int ansmax = max(dpmax[st][k], dpmax[ed-(1<<k)+1][k]);
int ansmin = min(dpmin[st][k], dpmin[ed-(1<<k)+1][k]);
//cout << ansmax - ansmin << endl;
printf("%d\n", ansmax - ansmin);
}
}
return 0;
}
RMQ复习链接:http://blog.csdn.net/liang5630/article/details/7917702
POJ 3264 RMQ水题的更多相关文章
- poj 3264 RMQ 水题
题意:找到一段数字里最大值和最小值的差 水题 #include<cstdio> #include<iostream> #include<algorithm> #in ...
- POJ 3264 RMQ裸题
POJ 3264 题意:n个数,问a[i]与a[j]间最大值与最小值之差. 总结:看了博客,记下了模板,但有些地方还是不太理解. #include<iostream> #include&l ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- Poj 1552 Doubles(水题)
一.Description As part of an arithmetic competency program, your students will be given randomly gene ...
- poj 3264 RMQ
直接写个RMQ就能过. #include<iostream> #include<cstdio> #include<cstring> #include<algo ...
- 最小费用最大流模板 poj 2159 模板水题
Going Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15944 Accepted: 8167 Descr ...
- POJ 1837 Balance 水题, DP 难度:0
题目 http://poj.org/problem?id=1837 题意 单组数据,有一根杠杆,有R个钩子,其位置hi为整数且属于[-15,15],有C个重物,其质量wi为整数且属于[1,25],重物 ...
- poj 3264(RMQ或者线段树)
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 42929 Accepted: 20184 ...
- POJ - 3090 gcd水题
大概题意就是求\(1 \le i,j \le n\)的\(gcd(i,j) = 1\)的个数+2(对于0的特判) 正解应该是欧拉函数或者高逼格的莫比乌斯反演 但数据实在太水直接打表算了 /*H E A ...
随机推荐
- 20145335郝昊《网络攻防》Exp7 网络欺诈技术防范
20145335郝昊<网络攻防>Exp7 网络欺诈技术防范 实验内容 本次实践本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 简单应用SET工具建立冒名网站. ...
- tf.truncated_normal的用法
tf.truncated_normal(shape, mean, stddev) :shape表示生成张量的维度,mean是均值,stddev是标准差.这个函数产生正太分布,均值和标准差自己设定.这是 ...
- AP聚类算法
一.算法简介 Affinity Propagation聚类算法简称AP,是一个在07年发表在Science上的聚类算法.它实际属于message-passing algorithms的一种.算法的基本 ...
- RabbitMQ延时任务
概念: 消息的TTL(Time To Live)消息的TTL就是消息的存活时间.RabbitMQ可以对队列和消息分别设置TTL.对队列设置就是队列没有消费者连着的保留时间,也可以对每一个单独的消息做单 ...
- 【安装防火墙】没有iptables时的解决办法
一.检查iptables服务状态 首先检查iptables服务的状态 [root@woxplife ~]# service iptables status iptables: Firewall is ...
- Java ArrayDeque源码剖析
ArrayDeque 本文github地址 前言 Java里有一个叫做Stack的类,却没有叫做Queue的类(它是个接口名字).当需要使用栈时,Java已不推荐使用Stack,而是推荐使用更高效的A ...
- python input选择
例1 import sys #声明字符串数组并初始化 newspaper=['1.北京晚报','2.作家文摘','3.参考消息', \ '4.证券报','5.不需要'] #字符串数组的输出 ): pr ...
- ant的原理
ANT批量完成项目代码的重新编译.打包.测试.java语言编写与平台无关的. Ant工具 Ant是一种基于Java的build工具.理论上来说,它有些类似于(Unix)C中的make ,但没有make ...
- MongoDB(课时20 游标)
3.5 游标(重点) 所谓游标就是指数据可以一行行的进行操作,非常类似于ResultSet数据处理.在MongoDB里对游标的控制使用find()函数就可以返回游标.对于返回的游标如果想进行操作,使用 ...
- 附加题找bug
private: void ReSize(int sz) { ) { return; } if(maxSize != sz) { T *arr = new T[sz]; if(arr == NULL) ...