poj3264 balanced lineup

题目描述

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.

输入输出格式

输入格式:

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.

输出格式:

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.

主要还是要用rmq(虽然有人告诉我用贪心模拟可我觉得一定会爆

rmq就是在一个区间里找最小值或最大值 用st的做法

理解一下rmq的原理:假设我们要查询的这个数值在区间a[i]中,那么我们用f[i][j]来表示这个数;具体含义是这样的:f[i][j]表示 从i开始的2^j个数中的最大值 那么就可以确定a[i]=f[i][0];

那么对于一个2^j的数列我们可以把他平均分成两段 每段的长度为2^j-1;第一段是i到i+2^j-1 -1;第二段是i+2^j-1到i+2^j-1;

可以分别表示为:f[i][j-1]  f[i+2^j-1][j-1]

则设有2^k=j-i+1(即一个从i到j的区间的长度)那么有rmq(i,j)=max(f[i][k],f[j-2^k+1][k]);(区间最大值 最小值同理

则可以得出这个题的程序:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,q,s,e,maxn,minn;
int f1[200001][51],f2[200001][51],a[200001];int rmq(int i,int j){int k=0;while((1<<(k+1))+i<=j+1) k++;minn=min(f2[i][k],f2[j-(1<<k)+1][k]);maxn=max(f1[i][k],f1[j-(1<<k)+1][k]);return maxn-minn;
}int main(){scanf("%d%d",&n,&q);for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++){f1[i][0]=f2[i][0]=a[i];}for(int j=1;(1<<j)<=n;j++)for(int i=1;i+(1<<j)<=n+1;i++){f1[i][j]=max(f1[i][j-1],f1[(1<<(j-1))+i][j-1]);f2[i][j]=min(f2[i][j-1],f2[(1<<(j-1))+i][j-1]);}for(int i=1;i<=q;i++){scanf("%d%d",&s,&e);cout<<rmq(s,e)<<endl;} return 0;
}

岂不nice

关于st表的k的另一种求法

for (int a=1;(1<<a)<=n;a++)er[(1<<a)]=a;for (int a=3;a<=n;a++)if (er[a]==0) er[a]=er[a-1];

再另建一个函数

int query(int l,int r)
{int k=er[r-l+1];return max(f[l][k],f[r-(1<<k)+1][k]);
}

转载于:https://www.cnblogs.com/civilization-ga/p/9318601.html

【清北前紧急补课1】rmq相关推荐

  1. 【清北前紧急补课8】A % B Problem

    题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对 ...

  2. 【清北前紧急补课3】水题集锦

    1.均分纸牌 题目描述 有 NNN 堆纸牌,编号分别为 1,2,-,N1,2,-,N1,2,-,N .每堆上有若干张,但纸牌总数必为 NNN 的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为 ...

  3. MLNLP顶会论文发表总榜:谷歌最狂,清北入前十,周明、张岳、刘挺华人前三...

    中美差距何止一丁点! 作者 | 丛末.蒋宝尚 编辑 | 贾伟 伦敦帝国理工学院机器学习和自然语言处理著名学者Marek Rei 教授从2016年起,每年都会对ML&NLP相关的会议论文进行统计 ...

  4. MLNLP顶会论文发表总榜:谷歌最狂,清北入前十,周明、张岳、刘挺华人前三

    2020-02-08 16:38 导语:中美差距何止一丁点! 中美差距何止一丁点! 伦敦帝国理工学院机器学习和自然语言处理著名学者Marek Rei 教授从2016年起,每年都会对ML&NLP ...

  5. 上海交大计算机专业的优势,计算机专业高校实力排名,清北稳居前二,上海交大上榜...

    计算机专业近年来被称为"大热门",很多考生都想带头成为码农,网络时代的到来,电脑已经渗透到社会的各个角落,没有电脑的话,人类的未来就像盲人一样,我们所处的年代与上世纪国内各行各业刚 ...

  6. 为什么清北硕博扎推街道办毫不意外, 反会越来越多?

    近日,一张杭州余杭区招聘公示的截图引发网友关注.这份长长的公示名单里,清一色是来自清华.北大的毕业生,其中还包括一些街道办事处的岗位. 向上滑动阅览 例如: 运河街道办事处:录取的是北大新闻传播学硕士 ...

  7. 深圳、长沙高校排名飙升,清北坐实亚洲大学Top2,留学深造还去啥新港日| 泰晤士2020亚洲大学榜...

    贾浩楠 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 最新大学排名来了. 与以往格外不同的是,双非院校,势头强劲. 比如南方科技大学跻身中国大陆院校前十,深圳大学排名飙升25位-- 这一 ...

  8. 某程序员吐槽清华北大不值钱了!过去清北毕业生去企业上班就是丢人现眼!现在互联网基层员工一堆清北人!清北怎么混成这样了?...

    都说现在学历贬值严重,有多严重呢? 一个程序员发帖吐槽现在清华北大都不值钱了,小时候记得清华北大都是天之骄子,清北毕业生要么经商创业,要么从政,要么从事研究工作,那时候清北的如果去上班都算丢人现眼,即 ...

  9. 2021清北毕业生去向关键词:进体制、搞教育、国内深造

    明敏 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 选择体制内机会,相比去年增长70%! 这是清华大学毕业生就业质量报告,最新披露的结果. 就在最近,清北<2021年毕业生就业质量 ...

最新文章

  1. arm-linux-gcc/ld/objcopy/objdump参数总结【转】
  2. python中options设置_如何使用ChromeOptions在Python selenium中禁用CSS
  3. 服务器运行jupyter notebook,解决办法
  4. Day1 字符串格式化
  5. PHP笔记——java程序员看懂PHP程序
  6. 在 eclipse 中设置每行的字数
  7. sql隐式连接和显示链接_SQL Server中的嵌套循环联接–批处理排序和隐式排序
  8. 代码重构!你敢吗?| 技术头条
  9. Bootstrap 3.2.0 源码试读 2014/08/14
  10. 组策略设置桌面显示计算机图标,计算机组策略应用设置大全
  11. 【JS】用JS发送电子邮件
  12. 普通人有没有必要学python,什么样的人适合学python
  13. 给antd的Table组件添加总计和平均值
  14. Matlab处理气象数据(十)给地图添加边界线
  15. 在线流程图和思维导图开发技术详解(五)
  16. 【财富空间】马斯克:2次被踢出局后,我悟出来的6条投资哲学
  17. react下绘制word申请表
  18. 小学计算机网络培训记录表,学校校本培训活动记录表(信息技术讲座)
  19. Java面向对象:Account类
  20. S32DS 3.4 3.5颜色配色方案及代码自动补全提示

热门文章

  1. Ansible搭建hadoop3.1.3高可用集群
  2. win10 + mac双系统安装常用工具
  3. spark on k8s报错:pods “spark-pi-4f2cd9772397764d-driver“ is forbidden: User “system:anonymous“
  4. K8S Deployment脚本部署Tomcat集群
  5. SpringBoot 2.1.3配置log4j2日志框架完整代码示例
  6. Hadoop hdfs 获取文件列表代码示例
  7. GridFS读文件代码示例
  8. dms系统与mysql_关于MySQL与DMsql探寻
  9. 大工20春《计算机文化基础》在线测试3,大工20春《计算机文化基础》在线测试3题目【标准答案】...
  10. mysql团队开发工具_最棒的10款MySQL GUI工具