DAY3 倍增學習報告

2021-10-17 19:56:47 字數 2495 閱讀 4723

沒學明白就完事了,報什麼告 這天的題雖然就4道且2道都是模板,但是由於學的太一般了,一道題琢磨了一下午,故認真消化了一下,複習複習,另一道等明天講完了補做。

/(課堂筆記)

倍增是將一般迴圈轉化成找2的n次方,時間o(logn)。

st表利用倍增能很快解決查詢區間最大/最小值問題。 /

本報告唯一的內容,是通過下面這個問題(又是乙個我玩了一下午的題)理解一下st表的運用:(p2216)

一句話題解:此題是乙個二維的st表(玩st表熟練的同志就不用再看下去了) 。

st表的基本原理是,用乙個dp陣列儲存從第i個數開始,包括它在內的2^j個數的和/最大值/最小值等基本特徵,然後對這個dp陣列進行查詢。

首先,回顧一下st表的模板:

#include

#include

using

namespace std;

long

long d[

100001

],c[

100001

],dp[

100001][

101]

,st[

100001];

intmain()

for(j =1;

(1<< j)

<= n;j++)}

for(i =

1;i <= n;i++

)for

(i =

1;i <= m;i++

)return0;

}

這裡比較值得一提的是,此處st儲存的是不大於區間長的最大的2^j的j值,用於保證一次查詢一定能查到最大值。

#include

#include

#include

using

namespace std;

int a[

1001][

1001

],b[

1001][

1001

],c[

1001][

1001

],temp,k;

intquery

(int x,

int y)

intmain()

} temp =

log2

(k);

for(l =

0;l < temp;l++)}

}for

(i =

1;i <= n - k +

1;i++)}

printf

("%d"

,res)

;return0;

}

我並不會科學的解釋這個**,只能簡要的解釋一下,如解讀有誤請指正

這個採取的是st表四合一的處理方式,b、c都表示從(i,j)開始k為邊長中的最值,先賦值為a,然後再初始處理表示最值,最後按st表的方式進行查詢並合併出結果,只不過查詢的次數是二維的。

#include

#include

using

namespace std;

int ma[

1001][

1001][

10],mi[

1001][

1001][

10];int st[

1001

],a,b,n,data;

intmain()

} st[0]

=-1;

for(i =

1;i <=

max(a,b)

;i++

) st[i]

= st[i >>1]

+1;for

(i =

1;i <= a;i++

)//向右的st表}}

for(i =

1;i <= a;i++

)//將向下的st表初狀態賦值為向右的st表

}for

(j =

1;j <= b;j++

)//合併向下的st表}}

int ans =

2147483647

;for

(i =

1;i + n -

1<= a;i++

)//查詢

}printf

("%d\n"

,ans)

;return0;

}

這一段**完全是兩個一維st表的合成。首先進行一維st表的合成,然後再把這個st表賦值給下一維的初狀態,然後進行下一維st表的合成,就完成了二維st表,查詢方法也與一維st表相同,只不過需要取n次查詢的最小值。這樣寫比較接近原模板,好理解和模仿,但是空間複雜度較高。

thank you for reading!

ACM新手DAY 24 倍增與樹上倍增

題目 一棵樹,給三個節點,求它們間乙個點到其餘兩個點路徑的公共路徑上經過節點數的最大值。include include include include using namespace std typedef long long ll const int n 1e5 7 vector int son ...

Day3 前端學習

組成部分 標題 表頭 主體 表尾 table 定義乙個 caption 定義 的標題 thead 定義表頭部分 tbody 定義 主體部分 tfoot 定義表尾,一般來顯示彙總資訊 tr 定義一行 th td 定義資料項 單元格 th一般用於表頭,有加粗的樣式 td 一般用於主體部分,沒有加粗的樣式...

學習記錄Day3

以類的方式組織 以物件的形式封裝資料 抽象特性 封裝,繼承,多型 方法定義 方法呼叫 呼叫非靜態方法需要例項化類 new student student new student student.方法 static方法與類同時建立 一般方法得等執行到那 值傳遞與引用傳遞 物件是乙個類的例項化 類是抽象...