算法 之 ST表

文章目錄

    • 區間最大值

  • ST表(Sparse Table)是一種高效處理靜態數據區間查詢的數據結構,主要的作用是用于快速查詢區間的最值,區間GCD,區間按位與或

在這里以區間最大值為例子說明st表的模版

  • 總體的思想就是定義dp[i][j]表示下標為i長度為2^j的區間的最大值,這個dp數組的定義的大小第一維度為原始的數組的長度(+1也可以),第二個維度就是數組長度取log2然后+1,反正就是得取大點

初始化st表

def init_st(n)# 假設數組的下標從1開始for i in range(1,N):dp[i][0] = num[i]# 枚舉區間的長度,假設最大的長度不超過2^19for i in range(1,20):# 枚舉區間的開始的位置,原始的下標的范圍是 1到 n# 區間長度為2^i的時候,區間的最右邊的下標最大可以為n-(1<<i)+1for j in range(1,n-(1<<i)+2):# 分為兩部分,后面的那一半的開始位置是 j + 2^(i-1)dp[j][i] = max(dp[j][i-1],dp[j+(1<<(i-1))][i-1])

查詢操作

def query_st(l,r):k = int(math.log2(r-l+1))return max(dp[l][k],dp[r-(1<<k)+1][k])

區間最大值

區間最大值

在這里插入圖片描述
在這里插入圖片描述

  • 直接套用模版
import math# 直接使用st表進行求解N,Q = map(int,input().split())a = [0] +  list(map(int,input().split()))dp = [[0]*(20) for _ in range(N+1) ]def init_stl():# 初始化st表# 定義dp[i][j]表示以i開始的,長度為2^j的區間的最大值for i in range(1,N+1):dp[i][0] = a[i]# 枚舉長度的冪次for i in range(1,20):# 枚舉開始的位置for j in range(1,N-(1<<i)+2):dp[j][i] = max(dp[j][i-1],dp[j+(1<<(i-1))][i-1])def query_stl(l,r):k = int(math.log2(r-l+1))ans = max(dp[l][k],dp[r-(1<<k)+1][k])return ansinit_stl()for _ in range(Q):l,r = map(int,input().split())print(query_stl(l,r))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73739.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73739.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73739.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Deepseek X 文心智能體:諧音梗廣告創意大師

體驗鏈接 飛書文檔 一、引言 在當今競爭激烈的市場環境下&#xff0c;廣告創意對于產品或服務的推廣至關重要。諧音廣告以其獨特的語言魅力&#xff0c;能夠迅速吸引受眾的注意力并留下深刻印象。本智能體旨在利用 DeepSeek 模型強大的語言分析和推理能力&#xff0c;為用戶…

libilibi項目優化(2)視頻文件分塊上傳

第一版 文件分片上傳過程總結 整個文件分片上傳過程分為三個主要步驟&#xff1a;預上傳、分片上傳和獲取已上傳分塊信息。以下是每個步驟的詳細描述&#xff1a; 1. 預上傳&#xff08;preUploadVideo&#xff09; 功能&#xff1a;生成唯一的上傳 ID&#xff0c;并將文件…

TCP簡單鏈接的編程實現

TCP簡單鏈接的編程實現 本文主要介紹TCP應用層的編碼實現。 TCP是一種面向連接的、可靠的、基于字節流的傳輸層協議&#xff0c;它是互聯網協議套件&#xff08;TCP/IP&#xff09;中的核心協議之一&#xff0c;廣泛應用于需要可靠數據傳輸的場景&#xff0c;如&#xff1a;網…

使用Multiprocessing模塊創建子進程,需要放到__main__中

1 場景說明 在Python中&#xff0c;使用multiprocessing模塊創建子進程時&#xff0c;將創建子進程的代碼放在if __name__ __main__: 塊之外&#xff0c;如下面代碼&#xff1a; import multiprocessing import timedef test_func(name):print(f"子進程 {name} 開始運行…

描述<canvas>標簽的主要用途,如何在其上繪制簡單圖形?

大白話描述標簽的主要用途&#xff0c;如何在其上繪制簡單圖形&#xff1f; <canvas> 標簽的主要用途 <canvas> 標簽是 HTML5 中新增的一個標簽&#xff0c;它就像是一塊“畫布”&#xff0c;你可以在網頁上用它來繪制各種圖形、動畫、制作游戲等。簡單來說&…

【RHCE實驗】搭建主從DNS、WEB等服務器

目錄 需求 環境搭建 配置nfs服務器 配置web服務器 配置主從dns服務器 主dns服務器 從dns服務器 配置客戶端 客戶端測試 需求 客戶端通過訪問 www.nihao.com 后&#xff0c;能夠通過 dns 域名解析&#xff0c;訪問到 nginx 服務中由 nfs 共享的首頁文件&#xff0c;內容…

Shell條件判斷

一、使用if選擇結構 if單分支的語法組成&#xff1a; if 條件測試;then 命令序列 fi if雙分支的語法組成&#xff1a; if 條件測試;then 命令序列1 else 命令序列2 fi if多分支的語法組成&#xff1a; if 條…

理解langchain langgraph 官方文檔示例代碼中的MemorySaver

以下是langchain v0.3官方示例代碼 from langgraph.checkpoint.memory import MemorySaver from langgraph.graph import START, MessagesState, StateGraph# 可以理解為&#xff1a;定義一個流程&#xff0c;這個流程中用到的數據類型是Messages。 <---定義一個有向圖&…

【HarmonyOS Next之旅】DevEco Studio使用指南(三)

目錄 1 -> 一體化工程遷移 1.1 -> 自動遷移 1.2 -> 手動遷移 1.2.1 -> API 10及以上歷史工程遷移 1.2.2 -> API 9歷史工程遷移 1 -> 一體化工程遷移 DevEco Studio從 NEXT Developer Beta1版本開始&#xff0c;提供開箱即用的開發體驗&#xff0c;將SD…

vuex持久化存儲,手動保存到localStorage

vuex持久化存儲&#xff0c;手動保存到localStorage 一、vue21. 手動存儲到localStoragestore/index.js 2. 使用持久化存儲插件store/index.jsstore/modules/otherData.js保存到localStorage 二、vue31. index.ts2. store/modules/globalData.ts3. 在組件中使用App.vue 一、vue…

nodejs使用 mysql2 模塊獲取 mysql 中的 json字段,而不是 mysql

mysql 模塊獲取的 json 字段&#xff0c;是字符串mysql2 模塊獲取的 json 字段&#xff0c;是符合預期的 json 對象 mysql mysql2 最后編輯于&#xff1a;2025-02-24 22:16:53 © 著作權歸作者所有,轉載或內容合作請聯系作者 喜歡的朋友記得點贊、收藏、關注哦&#xff01;…

鴻蒙(OpenHarmony)開發實現 息屏/亮屏 詳情

官網參考鏈接 實現點擊關閉屏幕&#xff0c;定時5秒后喚醒屏幕 權限 {"name": "ohos.permission.POWER_OPTIMIZATION"}代碼實現 import power from ohos.power;Entry Component struct Page3 {private timeoutID: number | null null; // 初始化 timeout…

【網工第6版】第1章 計算機網絡概論

目錄 1計算機網絡形成和發展 ■計算機網絡 ■我國互聯網發展 ■計算機網路分類 ■計算機網絡應用 2 OSI和TCP/IP參考模型 ■網絡分層的意義 ■OSI參考模型 ■TCP/IP參考模型 ■TCP/IP參考模型協議 3 數據封裝與解封過程 ■封裝 ■解封 1計算機網絡形成和發展 ■計…

理解我們單片機擁有的資源

目錄 為什么要查詢單片機擁有的資源 所以&#xff0c;去哪些地方可以找數據手冊 一個例子&#xff1a;STM32F103C8T6 前言 本文章隸屬于項目&#xff1a; Charliechen114514/BetterATK: This is a repo that helps rewrite STM32 Common Repositorieshttps://github.com/C…

《我的Python覺醒之路》之轉型Python(十五)——控制流

[今天是2025年3月17日&#xff0c;繼續復習第一章節、第二章節的內容 ] 《我的Python覺醒之路》之轉型Python&#xff08;十四&#xff09;——控制流

AndroidStudio+Android8.0下的Launcher3 導入,編譯,燒錄,調試

文章目錄 編譯完成搜索輸出文件Android.mk配置gradle編譯環境報錯一報錯二報錯三輸出文件下載INSTALL_FAILED_TEST_ONLY查找系統簽名查找簽名工具開始簽名查看簽名簽名問題重新生成秘鑰解決方案生成成功挽救錯誤:重新刷機更換testkey秘鑰keystore生成keystoreINSTALL_FAILED_S…

Linux--gdb/cgdb

ok&#xff0c;我們今天學習gdb的安裝和使用 調試器-gdb/cgdb使用 VS、VScode編寫的代碼一般都是release格式的&#xff0c;gdb 的格式一般是debug 換成debug模式命令 :-g gdb會記錄最新的一條命令&#xff0c;直接回車就是默認執行該命令 一個調試周期下&#xff0c;斷點…

Oracle GoldenGate 全面解析

Oracle GoldenGate 全面解析 Oracle GoldenGate 是一種實時數據集成和復制解決方案,廣泛應用于數據同步、數據庫遷移、高可用性和災難恢復等場景。以下將詳細解答您提出的關于 Oracle GoldenGate 的一系列問題。 1. Oracle GoldenGate 的架構組成及其核心組件的作用 架構組成…

ModBus TCP/RTU互轉(主)(從)|| Modbus主動輪詢下發的工業應用 || 基于智能網關的串口服務器進行Modbus數據收發的工業應用

目錄 前言 一、ModBus TCP/RTU互轉&#xff08;從&#xff09;及應用|| 1.1 舉栗子 二、ModBus TCP/RTU互轉&#xff08;主&#xff09; 2.1 舉栗子 三、ModBus 主動輪詢 3.1 Modbus主動輪詢原理 3.2 Modbus格式上傳與下發 3.2.1.設置Modbus主動輪詢指令 3.2.2 設…

場景題:一個存儲IP地址的100G 的文件, 找出現次數最多的 IP ?

和大文件中存id&#xff0c;然后要求排序問題一樣的處理思路 使用MapReduce的思想解決&#xff0c;加上哈希分割&#xff0c;先將大文件中的IP地址按照哈希函數進行分割&#xff0c;存到多個文件上&#xff0c;接著每個分片單獨處理&#xff0c;用Hashmap統計IP出現頻次&#…