• BZOJ2096 [Poi2010]Pilots


    好奇怪啊,莫名其妙的WA了好几次。。。

    两个类似单调队列的东西维护就可以了

    后来才发现。。。tmp忘了开始的时候赋值1了(抓狂ing)

     1 /**************************************************************
     2     Problem: 2096
     3     User: rausen
     4     Language: C++
     5     Result: Accepted
     6     Time:1092 ms
     7     Memory:79908 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <algorithm>
    12  
    13 using namespace std;
    14 const int N = 3000005;
    15 const int Maxlen = 15 * N + 105;
    16  
    17 int n, k, ans = 1;
    18 int a[N], q[2][N], l[2], r[2];
    19 char buf[Maxlen], *c = buf;
    20 int Len;
    21  
    22 inline int read() {
    23     int x = 0, sgn = 1;
    24     while (*c < '0' || '9' < *c) {
    25             if (*c == '-') sgn = -1; 
    26             ++c;
    27         }
    28     while ('0' <= *c && *c <= '9')
    29         x = x * 10 + *c - '0', ++c;
    30     return sgn * x;
    31 }
    32  
    33 inline void pop_tail_max(int i) {
    34     while (l[0] <= r[0] && a[q[0][r[0]]] <= a[i])
    35         --r[0];
    36     q[0][++r[0]] = i;
    37 }
    38  
    39 inline void pop_tail_min(int i) {
    40     while (l[1] <= r[1] && a[q[1][r[1]]] >= a[i])
    41         --r[1];
    42     q[1][++r[1]] = i;
    43 }
    44  
    45 int main() {
    46     int i, tmp;
    47     Len = fread(c, 1, Maxlen, stdin);
    48     buf[Len] = '';
    49     k = read(), n = read();
    50     for (i = 1; i <= n; ++i)
    51         a[i] = read();
    52     l[0] = l[1] = 1, r[0] = r[1] = 0;
    53     for (i = tmp = 1; i <= n; ++i) {
    54         pop_tail_max(i);
    55         pop_tail_min(i);
    56         while (a[q[0][l[0]]] - a[q[1][l[1]]] > k)
    57             if (q[0][l[0]] < q[1][l[1]]) tmp = q[0][l[0]++] + 1;
    58             else tmp = q[1][l[1]++] + 1;
    59         ans = max(ans, i - tmp + 1);
    60     }
    61     printf("%d
    ", ans);
    62     return 0;
    63 }
    View Code
    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    福大软工1816 · 第三次作业
    福大软工1816 · 第二次作业
    2018福大软工第一次作业
    20180823-软工实践第一次作业-自我介绍
    福大软工1816 · 第一次作业
    开博之作 · 简单的自我介绍
    2018软件工程实践第一次作业
    系列最终篇!
    含继承多态思想的四则运算器和简单工厂模式初步
    作业六 栈的使用和界面编程探索
  • 原文地址:https://www.cnblogs.com/rausen/p/4129602.html
Copyright © 2020-2023  润新知