P4392 [BOI2007]Sound 静音问题
----------------------
链接:Miku
-----------------------
这道题本质上还是个st表,只要两个st表,然后对于每一个点,查询他开始的
长度为m的去年的最大值,最小值之差就可以了。
-------------------------
然而这个题还有个坑点,太大了,直接写会MLE,我们重新读一下题,题目说了区间是M。
那我们最多开到log2(m)就可以了,再大也用不到啊(这个小优化让它变成了绿题)
---------------------------
然后就可以AC了。
----------------------------
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cmath>
using namespace std;
int st[][];
int st2[][];
int x,y;
int n,m,c;
int f;
int main(){
cin>>n>>m>>c;
int k=log2(m);
for(int i=;i<=n;++i){
scanf("%d",&st[i][]);
st2[i][]=st[i][];
}
for(int i=;i<=k;++i){
for(int j=;j+(<<i)-<=n;++j)
st[j][i]=max(st[j][i-],st[j+(<<(i-))][i-]);
}
for(int i=;i<=;++i){
for(int j=;j+(<<i)-<=n;++j)
st2[j][i]=min(st2[j][i-],st2[j+(<<(i-))][i-]);
}
for(int x=;x<=n-m+;++x){
int y=x+m-;
int u=max(st[x][k],st[y-(<<k)+][k])-min(st2[x][k],st2[y-(<<k)+][k]);
if(u<=c){
cout<<x<<endl;
f=;
}
}
if(!f)
cout<<"NONE";
return ;
}
Ac
P4392 [BOI2007]Sound 静音问题的更多相关文章
- 洛谷题解 P4392 【[BOI2007]Sound 静音问题】
题目链接 其实写线段树的题还是比较的令我开心的因为不用脑子 怎么判断这题是要写线段树的? 1.暴力只能拿50分 2.这题是个绿题 3 .看数据范围 #include <cstdio> #i ...
- 2021.08.06 P4392 Sound静音问题(ST表)
2021.08.06 P4392 Sound静音问题(ST表) [P4392 BOI2007]Sound 静音问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 序列a,求 ...
- BZOJ 1342: [Baltic2007]Sound静音问题( 单调队列 )
一开始写了个RMQ然后就T了... 好吧正解是单调队列, 维护两个单调队列... ----------------------------------------------------------- ...
- 1342: [Baltic2007]Sound静音问题
1342: [Baltic2007]Sound静音问题 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 710 Solved: 307[Submit][ ...
- BZOJ_1342_[Baltic2007]Sound静音问题_单调队列
BZOJ_1342_[Baltic2007]Sound静音问题_单调队列 题意: 给出n个数,求∑[ max{a[i]~a[i+m-1]} - min{a[i]~a[i+m-1]} <= c ] ...
- [bzoj1342][Baltic2007]Sound静音问题_单调队列
Sound静音问题 bzoj-1342 Baltic-2007 题目大意:给定一个n个数的序列,求所有的长度为m的区间,使得区间内最大值减去最小值不超过阈值c. 注释:$1\le n \le 10^6 ...
- BZOJ1342 [Baltic2007]Sound静音问题
越来越水了... 这道题是简单的单调队列,同时维护最大值和最小值即可. 另解:multiset大法求区间最大最小,但是复杂度会上升... /****************************** ...
- 【单调队列】BZOJ1342-[Baltic2007]Sound静音问题
[题目大意] 给出一个n个数的序列,以哪位位置为开头的长度为m的区间满足该区间的最大值与最小值的差≤一个定值. [思路] 单调队列……说一下单调队列比较方便的操作. 把第一个先丢进去,开始条件为hea ...
- BZOJ 1342: [Baltic2007]Sound静音问题 | 单调队列维护的好题
题目: 给n个数字,一段合法区间[l,l+m-1]要求max-min<=c 输出所有合法区间的左端点,如果没有输出NONE 题解: 单调队列同时维护最大值和最小值 #include<cst ...
随机推荐
- 令牌桶算法实现API限流
令牌桶算法( Token Bucket )和 Leaky Bucket 效果一样但方向相反的算法,更加容易理解.随着时间流逝,系统会按恒定 1/QPS 时间间隔(如果 QPS=100 ,则间隔是 10 ...
- spring源码系列(一):使用Gradle构建spring5源码的一些坑和步骤
源代码github: https://github.com/spring-projects/spring-framework.git 一 修改项目配置文件中gradle版本和地址 替换成本地安装的版 ...
- Activity工作流框架入门(二)API使用DEMO
工作流API使用Demo package activity.demo.test; import java.io.File; import java.io.FileInputStream; import ...
- 精心整理「服务器Linux C/C++」 成长路程(附思维导图)
前言 我不是名校毕业,更没有大厂的背景,我只是一个毕业不到 2 年的普普通通的程序员,在摸爬滚打的工作这段时间里,深知了有一个「完整的知识体系」是非常重要的.当事人非常后悔没有在大学期间知道这个道理- ...
- 7.场景5:使用Linux桥的VRRP(L3HA)的高可用性
此场景描述了使用ML2插件和Linux网桥的OpenStack网络服务的高可用性实现. 他的高可用性实施例增强了这样的场景:具有Linux网桥架构的传统使用了keepalived的虚拟路由器冗余协议( ...
- 把"重试"抽象出来做个工具类吧
背景介绍 我们在工作中难免会写一些重复性的代码,所以需要我们具备一定的抽象能力,比如把共同的逻辑抽取到抽象类中,也可以通过一些工具类来避免冗余代码 今天这篇文章就是把一个调用服务的重试功能抽取出一个工 ...
- CCF_201312-5_I’m stuck!
一次bfs从起点开始找到起点能到达的点,一次bfs从终点开始找到能到终点的点,最后输出答案即可. 刚开始写的时候,考虑找起点能到达的点的时候,用了dfs,提交只有20分,仔细想了一下,会存在无限循环的 ...
- Pycharm创建Django项目显示python non-zero exit code(1)错误
好久时间没有做Django的项目了,今天创建项目竟然报Non-zero exit code(1)错误 查明原因是因为pip不是最新版本,需要执行以下命令:python -m pip install - ...
- 我的一个配置redux(实现一次存储与调用方法)之旅
前言 : 今天呢,就配置一下redux,redux的重要性呢,就叭叭叭一大堆,什么也没有带着配置一次来的重要,因为许多涉及到的属性和方法,用法是活的,但格式是需要记忆的. 过程中不要嫌我唠叨,有的地方 ...
- Go语言实现:【剑指offer】数组中的逆序对
该题目来源于牛客网<剑指offer>专题. 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对10000 ...