1342: [Baltic2007]Sound静音问题
时间:2022-05-08
本文章向大家介绍1342: [Baltic2007]Sound静音问题,主要内容包括1342: [Baltic2007]Sound静音问题、Description、Input、Output、Sample Input、Sample Output、HINT、Source、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
1342: [Baltic2007]Sound静音问题
Time Limit: 5 Sec Memory Limit: 162 MB
Submit: 710 Solved: 307
Description
静音问题 数字录音中,声音是用表示空气压力的数字序列描述的,序列中的每个值称为一个采样,每个采样之间间隔一定的时间。 很多声音处理任务都需要将录到的声音分成由静音隔开的几段非静音段。为了避免分成过多或者过少的非静音段,静音通常是这样定义的:m个采样的序列,该序列中采样的最大值和最小值之差不超过一个特定的阈值c。 请你写一个程序,检测n个采样中的静音。
Input
第一行有三个整数n,m,c( 1<= n<=1000000,1<=m<=10000, 0<=c<=10000),分别表示总的采样数、静音的长度和静音中允许的最大噪音程度。第2行n个整数ai (0 <= ai <= 1,000,000),表示声音的每个采样值,每两个整数之间用空格隔开。
Output
列出了所有静音的起始位置i(i满足max(a[i, . . . , i+m−1]) − min(a[i, . . . , i+m−1]) <= c),每行表示一段静音的起始位置,按照出现的先后顺序输出。如果没有静音则输出NONE。
Sample Input
7 2 0 0 1 1 2 3 2 2
Sample Output
2 6
HINT
Source
题解:直接单调队列水水哒。。。
1 var
2 a3,a4,a1,a2,i,j,k,l,m,n,c:longint;
3 a,d1,d2:array[0..1000005] of longint;
4 flag:boolean;
5 pr:array[0..10] of longint;
6 function check(x:longint):boolean;inline;
7 begin
8 exit(((a[d1[a3]]-a[d2[a4]])<=c) and (x>=m));
9 end;
10 begin
11 readln(n,m,c);
12 for i:=1 to n do read(a[i]);
13 readln;
14 flag:=false;
15 d1[1]:=1;d2[1]:=1;a3:=1;a1:=1;a4:=1;a2:=1;
16 if check(1) then
17 begin
18 writeln(1);
19 flag:=true;
20 end;
21 for i:=2 to n do
22 begin
23 while (d1[a3]+m)<=i do inc(a3);
24 while (a3<=a1) and (a[d1[a1]]<=a[i]) do dec(a1);
25 inc(a1);d1[a1]:=i;
26 while (d2[a4]+m)<=i do inc(a4);
27 while (a4<=a2) and (a[d2[a2]]>=a[i]) do dec(a2);
28 inc(a2);d2[a2]:=i;
29 if check(i) then
30 begin
31 writeln(i-m+1);
32 flag:=true;
33 end;
34 end;
35 if not(flag) then writeln('NONE');
36 readln;
37 end.
- golang进度条
- 44. goroutine、channel、time的例子 | 厚土Go学习笔记
- AVL二叉树
- Golang:使用 httprouter 构建 API 服务器
- dataguard中需要注意的一些数据文件操作(r8笔记第21天)
- 42. select 的默认分支 | 厚土Go学习笔记
- 执行计划变化导致CPU负载高的问题分析 (r8笔记第20天)
- 数据结构基础(2) --顺序查找 ; 二分查找
- 数据结构基础(1) --Swap ; Bubble-Sort ; Select-Sort
- 使用 Go 语言完成 HTTP 文件上传与下载
- 运维平台的建设思考-元数据管理(四)(r8笔记第16天)
- JavaWeb21-基础加强(注解;代理;类加载器;泛型反射
- MySQL迁移文件的小问题(r8笔记第18天)
- SpringMVC学习第一天
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法