POJ 3264 Balanced Lineup (RMQ)
来源:互联网 发布:什么是京东数据 编辑:程序博客网 时间:2024/06/05 04:11
检验模板
代码:
#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <vector>using namespace std;const int N = 200005;int n, m;int rmax[N][20], rmin[N][20], rmi[N], dp[N];void rmqinit(int *A, int n) { rmi[0] = -1; for (int i = 1; i <= n; i++) { rmi[i] = ((i&(i - 1)) == 0) ? rmi[i - 1] + 1 : rmi[i - 1]; rmax[i][0] = A[i]; rmin[i][0] = A[i]; } for (int j = 1; j <= rmi[n]; j++) { for (int i = 1; i + (1<<j) - 1 <= n; i++) { rmax[i][j] = max(rmax[i][j - 1], rmax[i + (1<<(j - 1))][j - 1]); rmin[i][j] = min(rmin[i][j - 1], rmin[i + (1<<(j - 1))][j - 1]); } }}int rmqmax(int l, int r) { int k = rmi[r - l + 1]; return max(rmax[l][k], rmax[r - (1<<k) + 1][k]);}int rmqmin(int l, int r) { int k = rmi[r - l + 1]; return min(rmin[l][k], rmin[r - (1<<k) + 1][k]);}int main() { while (~scanf("%d%d", &n, &m)) { for (int i = 1; i <= n; i++) scanf("%d", &dp[i]); rmqinit(dp, n); int l, r; while (m--) { scanf("%d%d", &l, &r); printf("%d\n", rmqmax(l, r) - rmqmin(l, r)); } } return 0;}
0 0
- POJ 3264 Balanced Lineup(RMQ)
- POJ-3264 Balanced Lineup【RMQ】
- poj 3264 Balanced Lineup RMQ
- POJ 3264 Balanced Lineup [RMQ]
- 【RMQ】poj 3264 Balanced Lineup
- POJ 3264 Balanced Lineup (RMQ)
- POJ 3264 Balanced Lineup,RMQ
- POJ 3264 Balanced Lineup(RMQ)
- poj 3264 Balanced Lineup【RMQ】
- POJ-3264 Balanced Lineup【RMQ】
- POJ 3264 Balanced Lineup (RMQ)
- POJ 3264 Balanced Lineup (RMQ)
- 【POJ 3264】 Balanced Lineup (RMQ)
- POJ---3264-Balanced Lineup (RMQ)
- POJ 3264 Balanced Lineup (RMQ)
- POJ 3264 Balanced Lineup (RMQ)
- poj--3264 Balanced Lineup(RMQ)
- POJ 3264 Balanced Lineup RMQ
- 上海增值电话业务 供应吸费手机 年赚百万
- 鸡啄米vc++2010系列9(对话框控件的Tab顺序)
- 福州电话吸费赚钱 小投资大回报 手机吸费
- Oracle JDBC中的语句缓存
- 济南声讯吸费电话 加值电话吸费 无学历要求
- POJ 3264 Balanced Lineup (RMQ)
- HDU 1100 Trees Made to Order
- 测试博客
- 第四章
- Linux初始化
- 利用OpenCV霍夫变换检测出圆
- view在UIViewController中的生命周期
- IPTables工具及其与netfilter关系介绍
- Java集合研究一:Set与Map