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 ...
随机推荐
- pythonenv的安装及迁移
一.安装 运行 pip install virtualenv 即可安装virtualenv,想用 最新开发版 就运行 二. virtualenv基本使用 $ python virtualenv.py ...
- SpringBoot学习(二):配置文件
1.配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的: •application.properties •application.yml 配置文件的作用:修改SpringBoo ...
- gcd(最大公约数)算法
PS: 求一个两个数之间的最大公约数,往往需要被记起. int gcd(int x, int y) { if(y == 0) return x; int r = x % y; return gcd(y ...
- 7天用Go动手写/从零实现Web框架Gee
设计一个框架 大部分时候,我们需要实现一个 Web 应用,第一反应是应该使用哪个框架.不同的框架设计理念和提供的功能有很大的差别.比如 Python 语言的 django和flask,前者大而全,后者 ...
- HDU 6602 Longest Subarray (线段树)
题意: 1e5的数组,c(1e5)种数字求最长的子串,使得其中每个出现的数字出现的次数为0次或者大于k次 思路: 枚举右端点i,维护当前右端点时,每个左端点的可行元素数量,当且仅当可行元素为c时更新答 ...
- Go语言实现:【剑指offer】包含min函数的栈
该题目来源于牛客网<剑指offer>专题. 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数. 时间复杂度应为O(1). Go语言实现: var myList = ...
- Go语言实现:【剑指offer】二叉搜索树的后序遍历序列
该题目来源于牛客网<剑指offer>专题. 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. Go ...
- Golang robfig/cron 实现解析
robfig/cron是GO语言中一个定时执行注册任务的package, 最近我在工程中使用到了它,由于它的实现优雅且简单(主要是简单),所以将源码过了一遍,记录和分享在此. 文档:htt ...
- 四步搞定Zabbix 日志文件监控
Zabbix 日志文件监控 一.给运行Zabbix agent的用户授予要监控日志的读取权限. 1. 執行下面的命令,追加app的可讀權限: setfacl -m u:app:r-- /var/log ...
- gcc, ld
GCC gcc除了具备基本的c文件编译功能外,还把其它工具的功能也集成了进来,比如as的汇编功能,ld的链接功能. 因此,gcc也可以通过-Wa, option,将option传给汇编器as:也可以通 ...