2021.08.06 P4392 Sound静音问题(ST表)

[P4392 BOI2007]Sound 静音问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题意:

序列a,求a中子序列长度为m且子序列max-min<=cha的子序列起点。

PS:st表容易MLE,只需要开logm的数组,而不是logn,而且不需要记录原数组;

​ 如果没有一个子序列满足条件,输出NONE!!

分析:

裸的ST表。

代码如下:

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std; const int N=1e6+10;
int n,m,cha,log[100010],maxn[N][16],minn[N][16]; inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
} int main(){
n=read();m=read();cha=read();
log[2]=1;
for(int i=3;i<=m;i++)log[i]=log[i/2]+1;
//for(int i=1;i<=m;i++)cout<<log[i]<<" ";cout<<endl<<endl;
for(int i=1;i<=n;i++)minn[i][0]=maxn[i][0]=read();
for(int i=1;i<=14;i++)for(int j=1;j+(1<<i)-1<=n;j++){
maxn[j][i]=max(maxn[j][i-1],maxn[j+(1<<(i-1))][i-1]);
minn[j][i]=min(minn[j][i-1],minn[j+(1<<(i-1))][i-1]);
}
/*for(int i=1;i<=n;i++){
for(int j=1;j<=5;j++)cout<<maxn[i][j]<<" ";
cout<<endl;
}
cout<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=5;j++)cout<<minn[i][j]<<" ";
cout<<endl;
}
cout<<endl;*/
int k=log[m];
//cout<<k<<endl;
int flag=0;
for(int i=1;i+m-1<=n;i++){
int maxni=max(maxn[i][k],maxn[i+m-(1<<k)][k]);
int minni=min(minn[i][k],minn[i+m-(1<<k)][k]);
//cout<<i<<" "<<i-(1<<k)+1<<" "<<maxni<<" "<<minni<<endl;
if(maxni-minni<=cha)cout<<i<<endl,flag=1;
}
if(!flag)cout<<"NONE";
return 0;
}

2021.08.06 P4392 Sound静音问题(ST表)的更多相关文章

  1. 2021.08.06 P2441 角色属性树(树形结构)

    2021.08.06 P2441 角色属性树(树形结构) P2441 角色属性树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 求离x最近的祖先y且(x,y)>1. ...

  2. 2021.08.06 P3478 STA-Station(树形结构)

    2021.08.06 P3478 STA-Station(树形结构) [P3478 POI2008]STA-Station - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 给 ...

  3. P4392 [BOI2007]Sound 静音问题

    ---------------------- 链接:Miku ----------------------- 这道题本质上还是个st表,只要两个st表,然后对于每一个点,查询他开始的 长度为m的去年的 ...

  4. BZOJ 1342: [Baltic2007]Sound静音问题( 单调队列 )

    一开始写了个RMQ然后就T了... 好吧正解是单调队列, 维护两个单调队列... ----------------------------------------------------------- ...

  5. 1342: [Baltic2007]Sound静音问题

    1342: [Baltic2007]Sound静音问题 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 710  Solved: 307[Submit][ ...

  6. BZOJ_1342_[Baltic2007]Sound静音问题_单调队列

    BZOJ_1342_[Baltic2007]Sound静音问题_单调队列 题意: 给出n个数,求∑[ max{a[i]~a[i+m-1]} - min{a[i]~a[i+m-1]} <= c ] ...

  7. 新手C#构造函数、继承、组合的学习2018.08.06/07

    构造函数,是一种特殊的方法.主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同 ...

  8. 新手C#属性set,get的学习(部分转)2018.08.06

    public class person { public string name; } public class person { public string Name { set; get; } } ...

  9. 新手C#面向对象的学习2018.08.06

    class Person//声明一个Person类 { //类中的声明与Main中不同,类中声明的是字段而不是函数. public string gender; public string name= ...

随机推荐

  1. 74cms v4.2.1-v4.2.129-后台getshell漏洞复现

    0x00 影响范围 v4.2.1-v4.2.129 0x01 环境搭建 1. 先去官网下载 骑士人才系统基础版(安装包) 2.将下载好的包进行安装 0x02 复现过程 当前版本v4.2.111 点加工 ...

  2. C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (下篇)

    介绍 XML 序列化 .NET Framework 开发员指南   序列化是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间 ...

  3. JavaScript this的理解

    一直对js的this不怎么理解,最近看了JavaScript 语言精髓的相关章节,有点清晰的理解了,记录记录 /* 来自: JavaScript 语言精髓 方法:当一个函数被定义为对象的一个属性时,我 ...

  4. GC 是什么?为什么要有 GC?

    GC 是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误 的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动 监测对象是否超过作用域从而达到自动回收内存 ...

  5. RocketMQ实现分布式事务

    相关文章:http://www.uml.org.cn/zjjs/201810091.asp(深入理解分布式事务,高并发下分布式事务的解决方案) 三种分布式事务: 1.基于XA协议的两阶段提交 2.消息 ...

  6. Spring 的 jdbcTemplate 操作

    1.Spring框架是一站式框架 (1)针对 JavaEE 三层,每一层都有解决技术 (2)在 dao 层,使用 jdbcTemplate 2.Spring对不同的持久化层的技术都进行了封装 (1)j ...

  7. 论Hello World 有多少种输出方法:

    论Hello World 有多少种输出方法: C: printf("Hello Word!"); C++: cout<<"Hello Word!"; ...

  8. 如何0代码实现多人音视频通话?【内附源码/Demo】

    3月15日新增"1860+1194",全国进入了抗疫关键时期.响应政策多地采取了社会面清零策略. 3月14日零点,深圳按下了暂停键. 应疫情防控要求,深圳全市暂停生产经营活动,严格 ...

  9. H5打造属于自己的视频播放器(JS篇2)

    回顾 算了不回顾了 直接搞起,打开JS1中写的bvd.js 播放视频 播放按钮隐藏 视频开始播放 当点击播放按钮的时候,播放按钮将会隐藏,播放视频,这个不难,在JS1中我们就已经实现.但我们改变一下思 ...

  10. SQL之总结(四)---null问题的处理

    概述:如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录.这意味着该字段将以 NULL 值保存. NULL 值的处理方式与其他值不同. NULL 用作未知的或不适 ...