BZOJ1342 [Baltic2007]Sound静音问题
越来越水了。。。
这道题是简单的单调队列,同时维护最大值和最小值即可。
另解:multiset大法求区间最大最小,但是复杂度会上升。。。
/**************************************************************
Problem: 1342
User: rausen
Language: C++
Result: Accepted
Time:916 ms
Memory:12524 kb
****************************************************************/ #include <cstdio> using namespace std;
const int N = ;
int n, m, C, a[N];
int q1[N], q2[N], h1, h2, t1, t2;
bool f; inline int read(){
int x = ;
char ch = getchar();
while (ch < '' || ch > '')
ch = getchar();
while (ch >= '' && ch <= ''){
x = x * + ch - '';
ch = getchar();
}
return x;
} int pr[], NUM = ;
inline int print(int x){
while (x)
pr[++NUM] = (x % ) + '', x /= ;
while (NUM)
putchar(pr[NUM--]);
putchar('\n');
} inline bool check(int i){
return a[q1[h1]] - a[q2[h2]] <= C && i >= m;
} int main(){
n = read(), m = read(), C = read();
int i;
for (i = ; i <= n; ++i)
a[i] = read();
f = ;
q1[] = q2[] = , h1 = t1 = h2 = t2 = ;
if (check()){
print();
f = ;
}
for (i = ; i <= n; ++i){
while (q1[h1] + m <= i) ++h1;
while (h1 <= t1 && a[q1[t1]] <= a[i]) --t1;
q1[++t1] = i;
while (q2[h2] + m <= i) ++h2;
while (h2 <= t2 && a[q2[t2]] >= a[i]) --t2;
q2[++t2] = i;
if (check(i)){
print(i - m + );
f = ;
}
}
if (!f) puts("NONE");
return ;
}
(p.s. 那个300ms的这是怎么做到的。。。我输入输出外挂都开了好不好。。。哭T T)
BZOJ1342 [Baltic2007]Sound静音问题的更多相关文章
- [bzoj1342][Baltic2007]Sound静音问题_单调队列
		Sound静音问题 bzoj-1342 Baltic-2007 题目大意:给定一个n个数的序列,求所有的长度为m的区间,使得区间内最大值减去最小值不超过阈值c. 注释:$1\le n \le 10^6 ... 
- 【尺取法】【Multiset】bzoj1342 [Baltic2007]Sound静音问题
		O(n)地枚举所有长度为k的段,每次暴力转移. 转移的时候只是从最后插入一个数,从前面删去一个数. 计算的时候要取当前的max和min. 用multiset(∵元素是可重的)以上这些操作都是O(log ... 
- 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 ] ... 
- BZOJ 1342: [Baltic2007]Sound静音问题 | 单调队列维护的好题
		题目: 给n个数字,一段合法区间[l,l+m-1]要求max-min<=c 输出所有合法区间的左端点,如果没有输出NONE 题解: 单调队列同时维护最大值和最小值 #include<cst ... 
- 2021.08.06 P4392 Sound静音问题(ST表)
		2021.08.06 P4392 Sound静音问题(ST表) [P4392 BOI2007]Sound 静音问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 序列a,求 ... 
- 【单调队列】BZOJ1342-[Baltic2007]Sound静音问题
		[题目大意] 给出一个n个数的序列,以哪位位置为开头的长度为m的区间满足该区间的最大值与最小值的差≤一个定值. [思路] 单调队列……说一下单调队列比较方便的操作. 把第一个先丢进去,开始条件为hea ... 
- 洛谷题解 P4392 【[BOI2007]Sound 静音问题】
		题目链接 其实写线段树的题还是比较的令我开心的因为不用脑子 怎么判断这题是要写线段树的? 1.暴力只能拿50分 2.这题是个绿题 3 .看数据范围 #include <cstdio> #i ... 
随机推荐
- Git 基础笔记整理1
			Git 官网:http://git-scm.com/ git教程1:http://www.yiibai.com/git/home.html git教程2 :http://www.liaoxuefeng ... 
- Linux虚拟内存和物理地址的理解【转】
			本文转载自:http://blog.csdn.net/dlutbrucezhang/article/details/9058583 在多任务操作系统中的每一个进程都运行在一个属于它自己的内存沙盘中.这 ... 
- MacBook PRO蓝牙无法搜索设备
			背景 经常把MacBook合上盖子就塞进包里,用时打开盖子就继续操作,偶尔会出现刚刚还在用的罗技蓝牙鼠标,重新打开笔记本后就连接不上了,而且也无法搜索到周边的蓝牙设备. 解决方案 快捷键:Option ... 
- Where is HttpContent.ReadAsAsync?
			It looks like it is an extension method (in System.Net.Http.Formatting): HttpContentExtensions Class ... 
- .Net Core EF Core之Sqlite使用及部署
			1.添加引用Nuget包 Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Design Microsoft.Ent ... 
- The way to Go(3): 安装Go环境
			Reference: Github: Go Github: The way to Go 在mac上安装Go语言初体验 安装Go环境 Go 语言开发团队开发了适用于以下操作系统的编译器: Linux F ... 
- C语言优先级
			条件1 && 条件2,如果条件1为假,则条件2语句不执行,因为能判断该表达式为假 条件1 || 条件2,如果条件1为真,则条件2语句不执行,因为能判断该表达式为真 优先级 运算符 名称 ... 
- HDU 5887 Herbs Gathering(搜索求01背包)
			http://acm.hdu.edu.cn/showproblem.php?pid=5887 题意: 容量很大的01背包. 思路: 因为这道题目背包容量比较大,所以用dp是行不通的.所以得用搜索来做, ... 
- (转)Linux I/O 调度方法
			Linux I/O 调度方法 转自https://blog.csdn.net/theorytree/article/details/6259104 操作系统的调度有 CPU调度 CPU sche ... 
- mybatis generator插件系列--lombok插件 (减少百分之九十bean代码)
			经常使用mybatis generator生成代码的你 有没有因为生成的getter/setter而烦恼呢? 有没有生成后又手动加toString/hashCode/Equals方法呢? 有没有改一个 ... 
