【做题笔记】P2251 质量检测
一看题就知道是线段树裸题了。可是,对于每个 \(i\) ,对应的 \(Q\) 序列的下标是多少呢?应该查询的区间又是什么呢?
找规律:
\(i\ \ \ \ \ \ \ \ m\)
\(1\ \Rightarrow\ m\)
\(2\ \Rightarrow\ m+1\)
\(3\ \Rightarrow\ m+2\)
\(......\)
\(i\ \Rightarrow\ m+i-1\)
所以需要查找的区间是 \([i,m+i-1]\)
参考代码:
#include <iostream>
#include <stdio.h>
#include <math.h>
#define endl "\n"
using namespace std;
int n,m,a[1000010];
struct SegmentTree
{
    int l,r;
    long long data;
    #define l(x) t[x].l
    #define r(x) t[x].r
    #define sum(x) t[x].data
};
SegmentTree t[1000010*40];
inline int read()
{
    int s=0,w=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
    return s*w;
}
void build(int p,int l,int r)
{
    l(p)=l,r(p)=r;
    if(l==r){sum(p)=a[l];return ;}
    int mid=(l+r)>>1;
    build(p*2,l,mid);
    build(p*2+1,mid+1,r);
    sum(p)=min(sum(p*2),sum(p*2+1));
}
long long ask(int p,int l,int r)
{
    if(l<=l(p)&&r>=r(p))return sum(p);
    int mid=(l(p)+r(p))>>1;
    long long ans=(1<<30);
    if(l<=mid)ans=min(ans,ask(p*2,l,r));
    if(r>mid)ans=min(ans,ask(p*2+1,l,r));
    return ans;
}
int main()
{
    n=read(),m=read();
    for(int i=1;i<=n;i++)a[i]=read();
    build(1,1,n);
    for(int i=1;i<=n-m+1;i++)cout<<ask(1,i,m+i-1)<<endl;
    return 0;
}
【做题笔记】P2251 质量检测的更多相关文章
- 洛谷 P2251 质量检测 题解
		P2251 质量检测 题目背景 无 题目描述 为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后统计前M件产品中质量最差的产品的分值Q[m] = min{A1, ... 
- 洛谷 P2251 质量检测(st表)
		P2251 质量检测 题目提供者ws_ly 标签 难度 普及/提高- 题目描述 为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后统计前M件产品中质量最差的产品的 ... 
- SDOI2016 R1做题笔记
		SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ... 
- P2251 质量检测(ST表)
		P2251 质量检测 题目描述 为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后统计前M件产品中质量最差的产品的分值Q[m] = min{A1, A2, ... ... 
- C语言程序设计做题笔记之C语言基础知识(下)
		C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ... 
- C语言程序设计做题笔记之C语言基础知识(上)
		C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ... 
- SDOI2017 R1做题笔记
		SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30 
- SDOI2014 R1做题笔记
		SDOI2014 R1做题笔记 经过很久很久的时间,shzr又做完了SDOI2014一轮的题目. 但是我不想写做题笔记( 
- LCT做题笔记
		最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往 ... 
- java做题笔记
		java做题笔记 1. 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序 ... 
随机推荐
- (转)R语言 SVM支持向量机在 R 语言中的实现和使用
			支持向量机是一个相对较新和较先进的机器学习技术,最初提出是为了解决二类分类问题,现在被广泛用于解决多类非线性分类问题和回归问题.继续阅读本文,你将学习到支持向量机如何工作,以及如何利用R语言实现支持向 ... 
- 安装python3.7.4时报错:Service Pack 1 is required to continue installation
			python3.7.4安装失败:Service Pack 1 is required to continue installation 解决办法: 点击报错页面中的“log file”,日志最后一行显 ... 
- 关于vue 里:class 的几种使用方式
			最近一直在做vue项目 从网上搜索到的资料不太多.关于:class的使用 结合自己的实现 整理如下.接下来一篇写:style .其实从:class 这里可以想到:style的使用 也是类似的 一 cl ... 
- 洛谷P1583 魔法照片
			https://www.luogu.org/problem/P1583 话不多说,其实就是模拟,然后,各种繁琐 #include<bits/stdc++.h> using namespac ... 
- Java的三种循环:1、for循环	 2、while循环	 3、do...while循环
			Java的三种循环 Java三种循环结构: 1.for循环 2.while循环 3.do...while循环 循环结构组成部分:1.条件初始化语句,2.条件判断语句 , 3.循环体语句,4.条件控制语 ... 
- 注解 - @Deprecated
			意思是说此方法已过时,过时的原因就是有新的API的类替代了次方法. 这个被划去的方法仍然是可以正常使用的,就是一个提示而已. Java内在的File类中有如下方法 @Deprecated public ... 
- codeforces 1285E. Delete a Segment
			链接:https://codeforces.com/problemset/problem/1285/E 题意:给一个数轴上有n个线段集,线段集若有相交,则合并为一个新的合并线段集,比如[1,6]和[2 ... 
- helm安装异常解决方案
			问题1:helm version正常 helm list 异常报错如下 解决方法: [root@MASTER1 ~]# helm init --service-account tiller --til ... 
- mysql(3):锁和事务
			MySQL锁的介绍 锁是数据库系统区别于文件系统的一个关键特性.锁机制用于管理对共享资源的并发访问. 表级锁 例如MyISAM引擎,其锁是表锁设计.并发情况下的读没有问题,但是并发插入时的性能要差一些 ... 
- MyEcplise中编码格式的修改问题
			1.如果是在Run Configurations中修改编码格式的话,只能是修改当前java文件的编码格式,把改文件中的代码复制到 另一新建 的java文件中会出现异常,所以就会出现相同的代码在两个不同 ... 
