資料結構 RMQ LCA

2021-08-28 17:03:46 字數 790 閱讀 2019

1.st演算法

解決rmq[區間最值問題]的強力工具√;

即 sparse table 演算法,時間複雜度為o(nlogn)預處理+o(1)查詢;

預處理使用 dp 的思想,f(i, j)表示

假設要查詢從m到n這一段的最小值, 那麼我們先求出乙個最大的k, 使得k滿足2^k<=(n-m+1),於是我們就可以把[m, n]分成兩個(部分重疊的)長度為

至於為什麼查詢時左端點是

因為我們需要找到乙個點x,使得

這樣的話就可以得到

藍後類推另外乙個√

模板用的洛谷的p3685

#include#include#include#include#include#include#include#include#include#include#include#define ll long long

#define lson l,mid,rt<<1

#define rson mid+1,r,rt<<1|1

using namespace std;

const int maxn=1000000+5;

int n,m;

int dp[maxn][20+1];

int read()

while(c>='0'&&c<='9')

return x*f;

}int query(int l,int r)

int main()

} for(int i=1;i<=m;i++)

return 0;

}

資料結構 資料結構緒論

資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...

資料結構 資料結構演算法

分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...

資料結構 01 資料與資料結構

1.資料data 資料是描述客觀事物的符號,是計算機中可以操作的物件,是能被計算機識別,並輸入給計算機處理的符號集合。2.資料元素data elements 資料元素是組成資料的 有一定意義的基本單位,在計算機中通常作為整體進行處理。3.資料物件data object 資料物件是性質相同的資料元素的...