zoukankan      html  css  js  c++  java
  • [luoguP1816] 忠诚(st表 || 线段树)

    传送门

    其实我就是想练练 st表

    本以为学了线段树可以省点事不学 st表 了

    但是后缀数组中用 st表 貌似很方便

    所以还是学了吧,反正也不难

    ——代码

     1 #include <cstdio>
     2 #define N 100001
     3 #define min(x, y) ((x) < (y) ? (x) : (y))
     4 
     5 int n, m;
     6 int a[N], d[N][21];
     7 
     8 int main()
     9 {
    10     int i, j, k, x, y;
    11     scanf("%d %d", &n, &m);
    12     for(i = 1; i <= n; i++) scanf("%d", &a[i]);
    13     for(i = 1; i <= n; i++) d[i][0] = a[i];
    14     for(j = 1; (1 << j) <= n; j++)
    15         for(i = 1; i + (1 << j) - 1 <= n; i++)
    16             d[i][j] = min(d[i][j - 1], d[i + (1 << (j - 1))][j - 1]);
    17     for(i = 1; i <= m; i++)
    18     {
    19         scanf("%d %d", &x, &y);
    20         k = 0;
    21         while((1 << (k + 1)) <= y - x + 1) k++;
    22         printf("%d ", min(d[x][k], d[y - (1 << k) + 1][k]));
    23     }
    24     return 0;
    25 }
    View Code
  • 相关阅读:
    CV
    Flutter 概览
    spaCy 基本使用
    图像读写、属性
    图像原理
    NLP 实战
    NLTK 相似性度量
    NLTK 停用词、罕见词
    NLTK 词干提取、词形还原
    NLTK 基本操作
  • 原文地址:https://www.cnblogs.com/zhenghaotian/p/6985394.html
Copyright © 2011-2022 走看看