zoukankan      html  css  js  c++  java
  • 洛谷—— P2251 质量检测

    https://www.luogu.org/problemnew/show/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

     1 #include <cstdio>
     2 
     3 #define min(a,b) (a<b?a:b)
     4 
     5 inline void read(int &x)
     6 {
     7     x=0; register char ch=getchar();
     8     for(; ch>'9'||ch<'0'; ) ch=getchar();
     9     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
    10 }
    11 const int N(1000005);
    12 int n,m,st[N][20],log2[N],t;
    13 
    14 int Presist()
    15 {
    16     read(n),read(m);
    17     for(int i=1; i<=n; ++i)
    18         read(st[i][0]),log2[i]=(1<<t+1==i)?++t:t;
    19     for(int j=1; 1<<j<=n; ++j)
    20       for(int i=1; i+(1<<j)<=n+1; ++i)
    21         st[i][j]=min(st[i][j-1],st[i+(1<<j-1)][j-1]);
    22     for(int r,l=1,mid=log2[m]; l<=n-m+1; ++l)
    23     {
    24         r=l+m-1;
    25         printf("%d
    ",min(st[l][mid],st[r-(1<<mid)+1][mid]));
    26     }
    27     return 0;
    28 }
    29 
    30 int Aptal=Presist();
    31 int main(int argc,char**argv){;}
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    POJ 1300 Open Door
    POJ 2230 Watchcow
    codevs 1028 花店橱窗布置
    codevs 1021 玛丽卡
    codevs 1519 过路费
    codevs 3287 货车运输
    codevs 3305 水果姐逛水果街二
    codevs 1036 商务旅行
    codevs 4605 LCA
    POJ 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7795184.html
Copyright © 2011-2022 走看看