zoukankan      html  css  js  c++  java
  • 分块

    记得bl[0] = bl[n+1] = 一个很奇怪的数

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <cmath>
     6 #define REP(i, s, n) for(int i = s; i <= n; i ++)
     7 #define RAP(i, n, s) for(int i = n; i >= s; i --)
     8 #define id bl[i]
     9 using namespace std;
    10 const int INF = -1u >> 1;
    11 const int maxn = 10000 + 10;
    12 const int maxb = 100 + 10;
    13 int A[maxn], n, Q, SIZE;
    14 int bl[maxn], w[maxb], pre[maxn], suf[maxn];
    15 int query(int L, int R){
    16     int ret = -INF;
    17     if(bl[L] == bl[R]) REP(i, L, R) ret = max(ret, A[i]);
    18     else {
    19         REP(i, bl[L] + 1, bl[R] - 1) ret = max(ret, w[i]);
    20         ret = max(ret, pre[R]); ret = max(ret, suf[L]);
    21     }
    22     return ret;
    23 }
    24 void read(int &x){
    25     x = 0; int sig = 1; char ch = getchar();
    26     while(!isdigit(ch)) { if(ch == '-') sig = -1; ch = getchar(); }
    27     while(isdigit(ch)) x = 10 * x + ch - '0', ch = getchar();
    28     x *= sig; return ;
    29 }
    30 void init(){
    31     read(n); read(Q);
    32     SIZE = sqrt(n);
    33     REP(i, 1, SIZE) w[i] = -INF;
    34     bl[0] = bl[n + 1] = n + 1;
    35     REP(i, 1, n) read(A[i]), id = (i - 1) / SIZE + 1, w[id] = max(w[id], A[i]);
    36     REP(i, 1, n) if(id != bl[i - 1]) pre[i] = A[i]; else pre[i] = max(pre[i - 1], A[i]);
    37     RAP(i, n, 1) if(id != bl[i + 1]) suf[i] = A[i]; else suf[i] = max(suf[i + 1], A[i]);
    38     return ;
    39 }
    40 void work(){
    41     int L, R;
    42     while(Q --) read(L), read(R), printf("%d
    ", query(L, R));
    43     return ;
    44 }
    45 void print(){
    46 
    47     return ;
    48 }
    49 int main(){
    50     init();
    51     work();
    52     print();
    53     return 0;
    54 }
  • 相关阅读:
    单表查询
    解读python中SocketServer源码
    C++实训(2.3)
    C++实训(2.2)
    C++实训(2.1)
    C++实训(1.3)
    C++实训(1.1)
    顺序表的实现,在vs2019上运行成功
    p243_5(3)
    自考新教材-p176_5(2)
  • 原文地址:https://www.cnblogs.com/chxer/p/4419708.html
Copyright © 2011-2022 走看看