ST表(模板)「 查询区间最值 」
生活随笔
收集整理的這篇文章主要介紹了
ST表(模板)「 查询区间最值 」
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
The Water Problem
HDU - 5443?
「 第一部分nlogn預處理?? 第二部分O(1)詢問 」
#include <iostream> #include <bits/stdc++.h> using namespace std; const int maxn = 1000004; int f[maxn][20]; int a[maxn]; int n,q; void st() {for(int i = 1; i <= n; i ++) f[i][0] = a[i]; int t = log(n) / log(2) + 1;for(int j = 1; j < 20; j ++){for(int i = 1; i <= n - (1 << j) + 1; i ++){f[i][j] = max(f[i][j-1],f[i + (1 << (j - 1))][j - 1]);}} } int query(int x, int y) {int t = log(abs(y-x + 1))/ log(2);int a = f[x][t];int b = f[y - (1 << t) + 1][t];return max(a,b); } int main() {int t;scanf("%d",&t);while(t--){scanf("%d",&n);for(int i=1; i<=n; i++) scanf("%d",a+i);int l,r;st();scanf("%d",&q);while(q--){scanf("%d%d",&l,&r);cout<<query(l,r)<<endl;}}return 0; }轉載于:https://www.cnblogs.com/lcchy/p/10139415.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的ST表(模板)「 查询区间最值 」的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么把火锅店经营好 简单的了解一下里面的
- 下一篇: 赋值运算符函