一看题就知道是线段树裸题了。可是,对于每个 \(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 质量检测的更多相关文章

  1. 洛谷 P2251 质量检测 题解

    P2251 质量检测 题目背景 无 题目描述 为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后统计前M件产品中质量最差的产品的分值Q[m] = min{A1, ...

  2. 洛谷 P2251 质量检测(st表)

    P2251 质量检测 题目提供者ws_ly 标签 难度 普及/提高- 题目描述 为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后统计前M件产品中质量最差的产品的 ...

  3. SDOI2016 R1做题笔记

    SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...

  4. P2251 质量检测(ST表)

    P2251 质量检测 题目描述 为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后统计前M件产品中质量最差的产品的分值Q[m] = min{A1, A2, ... ...

  5. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  6. C语言程序设计做题笔记之C语言基础知识(上)

    C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...

  7. SDOI2017 R1做题笔记

    SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30

  8. SDOI2014 R1做题笔记

    SDOI2014 R1做题笔记 经过很久很久的时间,shzr又做完了SDOI2014一轮的题目. 但是我不想写做题笔记(

  9. LCT做题笔记

    最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往 ...

  10. java做题笔记

    java做题笔记 1. 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序 ...

随机推荐

  1. BK: How to read a book 第四篇

    第四篇 阅读的最终目标 第二十章 阅读的第四个层次:主题阅读 在做主题阅读时的要求: 1. 知道:知道应该读哪些书. 在面对如此庞大的相关资料时,我们要如何决定我们要研究的主题是什么呢. 如何判断属于 ...

  2. 理解 Oracle 多租户体系中(12c,18c,19c)Revoke 回收权限作用域范围

    本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个回收可以成功执行? 1. 在CDB级别中对用户进行权限回收,不带 container 子句的效果: 2. 在CDB级别中对用户进行权限回收, ...

  3. 文本中自动出现的 &#8203

    文本中自动出现的 &#8203   所借鉴原页面地址:https://blog.csdn.net/judyc/article/details/53097142 因判断容器内字符长度来做其它处理 ...

  4. js判断Android和Ios

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  5. HTML表单处理

    一.表单简介 表单的处理是一个多进程.首先创建一张表单,以供用固话输入详细的请求信息.接着,输入的数据被发送到服务器,在服务器里这些数据得到编译和错误检测.如果PHP代码识别出一个或多个需要重新输入的 ...

  6. linux 定时任务设置

    创建一个mysqlbak.sh文件 #!/bin/sh #文件名时间 time=`date '+%y-%m-%d %H:%M:%S'` #mysql用户 user=root #mysql密码 pass ...

  7. configparser模块简介

    https://www.cnblogs.com/plf-Jack/p/11170284.html

  8. Cannot find module 'less-bundle-promise'

    Error: Cannot find module 'less-bundle-promise' 解决办法 :npm install  less-bundle-promise  --save

  9. vue.js + element中el-select实现拼音匹配,分词、缩写、多音字匹配能力

    1.既然要用到拼音搜索,我们就需要一个拼音库,在这里我推荐一个第三方包:https://github.com/xmflswood/pinyin-match,在这里首先对这个包的开发者表示万分的感谢. ...

  10. anniversary party_hdu1520

    本来以为是一道很简单的提,可以分分钟解决(实际上就是很简单) 然而一直报错,找半天,竟然要多组输入(还是太菜了) 所以每组需要先初始化, 这是一道树形DP的简单题,具体思路就是我选这个上司就不能选他的 ...