【Baltic2007】【BZOJ1342】Sound静音问题

原创 2015年11月18日 17:11:44

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
优美的STL

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#define MAXN 1000010
#define GET (ch>='0'&&ch<='9')
using namespace std;
int n,m,c;
int a[MAXN];
void in(int &x)
{
    char ch=getchar();x=0;
    while (!GET)    ch=getchar();
    while (GET) x=x*10+ch-'0',ch=getchar();
}
multiset<int>   S;
int main()
{
    bool flag=1;
    in(n);in(m);in(c);
    for (int i=1;i<=n;i++)
    {
        in(a[i]);
        if (i<=m)   S.insert(a[i]);
    }
    for (int i=m+1;i<=n;i++)
    {
        if (*(--S.end())-*S.begin()<=c) flag=0,printf("%d\n",i-m);
        S.erase(S.find(a[i-m]));S.insert(a[i]);
    }
    if (*(--S.end())-*S.begin()<=c) flag=0,printf("%d\n",n+1-m);
    if (flag)   puts("NONE");
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

[Baltic2007]Sound静音问题

[Baltic2007]Sound静音问题

【BZOJ】【P1345】【Baltic2007】【序列问题Sequence】【ST表】

传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1345 首先最后剩下的一定是

【BZOJ】【P2346】【Baltic 2011】【Lamp】【题解】【堆Dijkstra】

传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2346 对角线建边,原来有的权w...

【Baltic2014】【BZOJ3916】friends

Description有三个好朋友喜欢在一起玩游戏,A君写下一个字符串S,B君将其复制一遍得到T,C君在T的任意位置(包括首尾)插入一个字符得到U.现在你得到了U,请你找出S. Input第一行一个...

BZOJ 3916 [Baltic2014]friends Hash

BZOJ 3916 [Baltic2014]friends Hash
  • wzq_QwQ
  • wzq_QwQ
  • 2015年09月30日 20:14
  • 891

BZOJ1369: [Baltic2003]Gem 树形DP

1369: [Baltic2003]Gem Time Limit: 2 Sec  Memory Limit: 64 MB Submit: 343  Solved: 219 [Submit][Sta...
  • Oakley_
  • Oakley_
  • 2016年09月28日 08:56
  • 270

bzoj1367【Baltic2004】sequence

左偏树,思路好题

BZOJ 1367 [Baltic2004]sequence 解题报告

这题在 CF Round #371 C题 又出了一次,,数据还是这题数据的弱化版,那题n^2的DP可以过,BZOJ上好像还有一题一样的,数据也是弱化的好像,三倍经验。。。 题...

BZOJ 2346 Baltic 2011 Lamp SPFA

题目大意:给定一个电路板,求改变最少的板子数量使电源与灯泡联通 在对角线之间跑最短路,如果需要改变边权就是1,否则就是0 注意别忘了输出NO SOLUTION #include #include...
  • PoPoQQQ
  • PoPoQQQ
  • 2014年11月02日 14:38
  • 1025

[Baltic2004]BZOJ 3916 friends - hash

传送门 题解:枚举去掉的是哪一位然后哈希推式子即可。 注意题目说的not unique是指的S不同。 代码: //BZOJ 3916 #include #include #include #...
  • Mys_C_K
  • Mys_C_K
  • 2017年07月22日 10:41
  • 95
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Baltic2007】【BZOJ1342】Sound静音问题
举报原因:
原因补充:

(最多只允许输入30个字)