日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P3865 【模板】ST表

發布時間:2023/12/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P3865 【模板】ST表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

P3865 【模板】ST表

https://www.luogu.org/problemnew/show/P3865

?

題目背景

這是一道ST表經典題——靜態區間最大值

請注意最大數據時限只有0.8s,數據強度不低,請務必保證你的每次查詢復雜度為?O(1)O(1)

題目描述

給定一個長度為?NN?的數列,和?MM?次詢問,求出每一次詢問的區間內數字的最大值。

輸入輸出格式

輸入格式:

?

第一行包含兩個整數?N, MN,M?,分別表示數列的長度和詢問的個數。

第二行包含?NN?個整數(記為?a_iai?),依次表示數列的第?ii?項。

接下來?MM行,每行包含兩個整數?l_i, r_ili?,ri?,表示查詢的區間為?[ l_i, r_i][li?,ri?]

?

輸出格式:

?

輸出包含?MM行,每行一個整數,依次表示每一次詢問的結果。

?

輸入輸出樣例

輸入樣例#1:?復制 8 8 9 3 1 7 5 6 0 8 1 6 1 5 2 7 2 6 1 8 4 8 3 7 1 8 輸出樣例#1:?復制 9 9 7 7 9 8 7 9

說明

對于30%的數據,滿足:?1 \leq N, M \leq 101N,M10

對于70%的數據,滿足:?1 \leq N, M \leq {10}^51N,M105

對于100%的數據,滿足:?1 \leq N \leq {10}^5, 1 \leq M \leq {10}^6, a_i \in [0, {10}^9], 1 \leq l_i \leq r_i \leq N1N105,1M106,ai?[0,109],1li?ri?N

?

1 #include<bits/stdc++.h> 2 #define ll long long 3 #define maxn 100005 4 #define lson l,mid,rt<<1 5 #define rson mid+1,r,rt<<1|1 6 #define pb push_back 7 #define pii pair<int,int> 8 using namespace std; 9 10 11 int a[100005]; 12 int ans[100005][25]; 13 14 int main(){ 15 int n,m; 16 scanf("%d %d",&n,&m); 17 for(int i=1;i<=n;i++){ 18 scanf("%d",&ans[i][0]); 19 } 20 for(int i=1;i<=20;i++){ 21 for(int j=1;j+(1<<i)-1<=n;j++){ 22 ans[j][i]=max(ans[j][i-1],ans[j+(1<<(i-1))][i-1]); 23 } 24 } 25 int x,y; 26 while(m--){ 27 scanf("%d %d",&x,&y); 28 int k=log2(y-x+1); 29 printf("%d\n",max(ans[x][k],ans[y-(1<<k)+1][k])); 30 } 31 } View Code

?

轉載于:https://www.cnblogs.com/Fighting-sh/p/10753270.html

總結

以上是生活随笔為你收集整理的P3865 【模板】ST表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。