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 資料物件是性質相同的資料元素的...