【cogs182】【USACO Jan07】均衡队形【st表】
题目描写叙述
农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按相同的顺序站好。
一日。农夫约翰决定为奶牛们举行一个“终极飞盘”比赛。为简化问题。他将从奶牛队列中选出一个连续区间来进行游戏。
只是,參加游戏的奶牛要玩的开心的话就不能在身高上差距太大。
农夫约翰制定了 Q (1 ≤ Q ≤ 200,000) 个预定的參赛组,给出它们的身高 (1 ≤ 身高 ≤ 1,000,000)。对每一个參赛组。他须要你帮助确定组中最高牛和最低牛的身高差。
输入格式
- 第 1 行: 两个空格隔开的整数,N 和 Q。
- 第 2..N+1 行: 第 i+1 行包括一个整数表示第 i 头牛的身高。
- 第 N+2..N+Q+1 行: 两个整数 A 和 B(1 ≤ A ≤ B ≤ N),表示一个从 A 到 B 的參赛组区间。
输出格式
- 第 1..Q 行: 每行包括一个整数来表示区间上最大身高差。
例子输入
6 3
1
7
3
4
2
5
1 5
4 6
2 2
例子输出
6
3
0
题解:st表练习题。 。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,a,b,q,ffmin[60000][30],ffmax[60000][30];
int in()
{
int x=0;
char ch;
ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
return x;
}
int main()
{
freopen("lineup.in","r",stdin);
freopen("lineup.out","w",stdout);
scanf("%d%d",&n,&q);
for (int i=1;i<=n;i++)
{
a=in();
ffmin[i][0]=a;ffmax[i][0]=a;
}
for (int j=1;j<=20;j++)
for (int i=1;i<=n;i++)
if (i+(1<<j)-1<=n)
{
ffmin[i][j]=min(ffmin[i][j-1],ffmin[i+(1<<(j-1))][j-1]);
ffmax[i][j]=max(ffmax[i][j-1],ffmax[i+(1<<(j-1))][j-1]);
}
else break;
for (int i=1;i<=q;i++)
{
int k,maxx,minn;
a=in();b=in();
k=(int)(log(b-a+1.0)/log(2.0));
maxx=max(ffmax[a][k],ffmax[b-(1<<k)+1][k]);
minn=min(ffmin[a][k],ffmin[b-(1<<k)+1][k]);
printf("%d\n",maxx-minn);
}
}
【cogs182】【USACO Jan07】均衡队形【st表】的更多相关文章
- COGS182 [USACO Jan07] 均衡队形[RMQ]
182. [USACO Jan07] 均衡队形 ★★ 输入文件:lineup.in 输出文件:lineup.out 简单对比时间限制:4 s 内存限制:128 MB 题目描述 农夫约翰 ...
- cogs 182. [USACO Jan07] 均衡队形 线段树
182. [USACO Jan07] 均衡队形 ★★☆ 输入文件:lineup.in 输出文件:lineup.out 简单对比时间限制:4 s 内存限制:128 MB 题目描述 农夫约 ...
- RMQ——[USACO Jan07] 均衡队形题解
题目:[USACO Jan07] 均衡队形 描述: 题目描述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按同样的顺序站好.一日,农夫约翰决定为奶牛们举行一个“终极飞盘”比 ...
- COGS 182. [USACO Jan07] 均衡队形
★★ 输入文件:lineup.in 输出文件:lineup.out 简单对比时间限制:4 s 内存限制:128 MB 题目描述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛 ...
- POJ 3264 Balanced Lineup 【ST表 静态RMQ】
传送门:http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total S ...
- POJ3693 Maximum repetition substring [后缀数组 ST表]
Maximum repetition substring Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9458 Acc ...
- 【BZOJ-2006】超级钢琴 ST表 + 堆 (一类经典问题)
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2473 Solved: 1211[Submit][Statu ...
- 【BZOJ-3956】Count ST表 + 单调栈
3956: Count Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 173 Solved: 99[Submit][Status][Discuss] ...
- 【BZOJ-4569】萌萌哒 ST表 + 并查集
4569: [Scoi2016]萌萌哒 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 459 Solved: 209[Submit][Status] ...
随机推荐
- IO 输出 PrintStream和PrintWriter
PrintStream和PrintWriter的autoflushing机制有点不同,前者在输出byte数组.调用println方法.输出换行符或者byte值10(即\n)时自动调用flush方法,后 ...
- Redis主从复制、哨兵模式
1.部署主从 环境:主IP:10.0.0.15,端口6379;从IP:10.0.0.16,端口6379. 原理:基于RDB持久化的功能来实现主从复制的功能. a.linux-redis1(10.0.0 ...
- [CC-CHANOQ]Chef and odd queries
题目大意: 给定$n(10^5)$个线段$[l_i,r_i](1\leq l_i,r_i\leq n)$,有$q(q\leq10^5)$组询问,每次给出$m_i(\sum m_i\leq n)$个点$ ...
- [LOJ6278]数列分块入门 2
题目大意: 给你一个长度为$n(n\leq 50000)$的序列$A$,支持进行以下两种操作: 1.将区间$[l,r]$中所有数加上$c$: 2.询问区间$[l,r]$中小于$c^2$的数的个数.思路 ...
- 我学MSMQ(二)
上次我主要学习的是MSMQ的基本的概念.安装消息队列和新建了一个简单的队列. 现在我就继续学习关于消息队列的接收先还是概念 消息的接收又分成同步和异步方式两种,同步接收在 ...
- Powershell 远程管理
一直使用 mstsc,为了防止墨菲定律,准备一些备用方案 环境,win10 to win12 winrm是windows 一种方便远程管理的服务: 首先要开启winrm service,便于在日常工作 ...
- USE [EPPM] [dbo].[REFRDEL_CLEANUP]
USE [EPPM] GO /****** Object: StoredProcedure [dbo].[REFRDEL_CLEANUP] Script Date: 2016/4/2 16:32:29 ...
- [Angular] Dynamic component rendering by using *ngComponentOutlet
Let's say you want to rending some component based on condition, for example a Tabs component. Insid ...
- EffectiveJava(16)复合优先于继承
为什么复合优先于继承? 1.继承违反了封装原则,打破了封装性 2.继承会不必要的暴露API细节,称为隐患.比如通过直接访问底层使p.getProperty(K,V)的键值对可以不是String类型 3 ...
- ubuntu18.04 安装mysql时'root'@'localhost'无法获取登录权限
查看一下user表,错误的起因就是在这里, root的plugin被修改成了auth_socket,用密码登陆的plugin应该是mysql_native_password mysql> sel ...