P2251 质量检测

题目背景

题目描述

为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后统计前M件产品中质量最差的产品的分值Q[m] = min{A1, A2, ... Am},以及第2至第M + 1件的Q[m + 1], Q[m + 2] ... 最后统计第N - M + 1至第N件的Q[n]。根据Q再做进一步评估。

请你尽快求出Q序列。

输入格式

输入共两行。

第一行共两个数N、M,由空格隔开。含义如前述。

第二行共N个数,表示N件产品的质量。

输出格式

输出共N - M + 1行。

第1至N - M + 1行每行一个数,第i行的数Q[i + M - 1]。含义如前述。

输入输出样例

输入 #1

10 4

16 5 6 9 5 13 14 20 8 12

输出 #1

5

5

5

5

5

8

8

说明/提示

[数据范围]

30%的数据,N <= 1000

100%的数据,N <= 100000

100%的数据,M <= N, A <= 1 000 000

【思路】

ST表

几乎就是ST表的模板题

先预处理出跳的步数小于等于m的2^k步

然后自己处理处LG函数

目的就是为了知道2^k<=m中

k的最大值是多少

如果刚好2^k==m那就不需要继续了

如果不刚好

那就记录最大的那个枚举到的k

就是LG[m]的值

然后按照板子输出

区间最小值就好了

区间怎么算呢?

起点是i很显然

终点是i + m - 1

这样起点和重点就知道啦

所以这个区间的最小值就是

min(f[i][LG[m]],f[i + m - 1 - (1 << LG[m]) + 1][LG[m]]);

【完整代码】

#include<iostream>
#include<cstdio> using namespace std;
const int Max = 100005;
int a[Max];
int f[Max][18];
int LG[Max];
int main()
{
int n,m;
cin >> n >> m;
for(register int i = 1;i <= n;++ i)
cin >> a[i],f[i][0] = a[i];
for(register int j = 1;(1 << j) <= m;++ j)
for(register int i = 1;i + (1 << j) - 1 <= n;++ i)
f[i][j] = min(f[i][j - 1],f[i + (1 << j - 1)][j - 1]);
int acioi = 0;
for(register int i = 1;(1 << i) <= m;++ i)
LG[1 << i] = i,acioi = i;
if(LG[m] == 0)
LG[m] = acioi;
for(register int i = 1;i <= n - m + 1;++ i)
printf("%d\n",min(f[i][LG[m]],f[i + m - 1 - (1 << LG[m]) + 1][LG[m]]));
return 0;
}

洛谷 P2251 质量检测 题解的更多相关文章

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

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

  2. 洛谷—— P2251 质量检测

    https://www.luogu.org/problemnew/show/P2251 题目背景 无 题目描述 为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后 ...

  3. 洛谷 P2251 质量检测

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

  4. 洛谷P2251 质量检测

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

  5. 洛谷P2832 行路难 分析+题解代码【玄学最短路】

    洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...

  6. 【洛谷P3960】列队题解

    [洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...

  7. P2251 质量检测(ST表)

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

  8. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  9. 洛谷P1577 切绳子题解

    洛谷P1577 切绳子题解 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数). 输入输出格 ...

随机推荐

  1. 在KubeSphere中部署Kubeapps

    1. 情况说明 使用一台VMWare Workstation虚拟机,4核8G内存,50G磁盘 已安装KubeSphere 2.1 版本,已经按照官方文档的入门必读,示例一创建好相应的账号信息等 Kub ...

  2. C#解压、压缩高级用法

    压缩:(可以吧要排除的文件去掉) /// <summary> /// 压缩文件夹 /// </summary> /// <param name="folder& ...

  3. System.Data.Entity.Core.EntityException: 可能由于暂时性失败引发了异常。如果您在连接到 SQL Azure 数据库,请考虑使用 SqlAzureExecutionStrategy。

    代码异常描述  ************** 异常文本 **************System.Data.Entity.Core.EntityException: 可能由于暂时性失败引发了异常.如果 ...

  4. MQTT协议中的topic

    1.MQTT协议中的topic 定阅与发布必须要有主题,只有当定阅了某个主题后,才能收到相应主题的payload,才能进行通信. 2. 主题层级分隔符--"/" 主题层级分隔符使得 ...

  5. 1+X证书学习日志——DOM节点的获取

    var oBox = document.getElementById('box');//获取ID为box的节点 var aBox = document.getElementsByTagName('di ...

  6. Android studio来开发移动App--SQA计划和系统测试规程

    概述 团队分工 产品需求 团队合作 每日例会 思维导图 UML 产品代码 团队分工 成员:刘鹏芝,罗樟,王小莉,沈兴艳,徐棒,彭康明,胡广键 产品用户:王小莉 需求规约:彭康明,罗樟 UML:刘鹏芝, ...

  7. python实战项目

    没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用到实际开发中更是不得而知了! 以上就是我们在学习过程中必须要有项目实战开发经验的原因,其实无论项 ...

  8. 过滤器实现Token验证(登录验证+过期验证)---简单的实现

    功能:登录验证+过期验证+注销清除cookie+未注销下关闭或刷新浏览器仍可直接访问action概述:token只存在客户端cookie,后端AES加密+解密+验证,每一次成功访问action都会刷新 ...

  9. Linux下用的脚本

    http://blog.itpub.net/29510932/viewspace-1166603/ 批量启动Tomcat 点击(此处)折叠或打开 #!/bin/bash #JDK路径 export J ...

  10. event.target事件

    event.target <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...