zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    自己做一个无敌的文件粉碎机
    编程王道,唯“慢”不破
    在Flex4中嵌入字体
    java函数参数默认值
    Adobe Air移动开发本人体会
    安装VS2013,可是电脑C盘没空间了,今天早上整理了下
    SilverFoxServer出炉!!
    C#中Abstract和Virtual
    解决insert语句插入时,需要写列值的问题
    SQL 标量函数-----日期函数 day() 、month()、year()
  • 原文地址:https://www.cnblogs.com/rausen/p/4129602.html
Copyright © 2011-2022 走看看