資訊學奧賽一本通(提高組)

2022-06-01 19:00:10 字數 1704 閱讀 5395

一、貪心演算法

按照結束時間由小到大的順序排列,依次考慮各個活動,如果沒有和已經選擇的活動衝突,就選;否則就不選。

首先按照區間的結束位置從小到大排列。然後在區間中進行選擇:對於當前區間,若集合中的點不能覆蓋它,則將區間末尾的數加入集合。

貪心策略:取最後乙個。

將所有區間

按照左端點由小到大排序,依次處理每個區間。每次選擇覆蓋點s的區間中右端點座標中最大的乙個,並將s更新為該區間的右端點座標,直到選擇的區間包含t。

貪心策略:在某時刻的s,找出乙個滿足a[i]<=s的b[i]最大值即可。

直觀:讓a沒有空閒,讓b空的少

johnson演算法:對於a=b的集合,按照b非公升序排列

按照罰款數額由大到小排序,然後依次進行安排。安排規則為:使處理當前任務的時間在既在期限之內,又盡量靠後,如果都已經排滿,則放棄處理並扔在最後.

二、二分(單調性)與三分(單峰性)

三,搜尋

例:數的劃分,生日蛋糕,小木棍,weight,addition chains。「一本通 1.3 練習 1」埃及分數

四、圖論

prim(堆優化),kruskal:prim適用於疏密圖,kruskal使用於稀疏圖。例:北極通訊網路。

一些相關拓展:最短路徑生成樹(例,黑暗城堡),次小生成樹,嚴格次小生成樹

對於無向圖,考慮floyd,列舉與k相鄰的兩個點求解最小值。

對於有向圖,考慮dijkstra,從1到n中列舉s,s是堆中第乙個取出的結點,掃瞄所有出邊,更新完成後使d[s]為無窮大,當s第二次被取出時,d[s]即為所求。

floyd:可處理無向與有向圖,邊權可正可負,不能有負環。可求解最小環。每對點之間。

dijkstra(堆優化):處理非負邊權。單源。**。

bellman-ford:單源,可解決負邊權

spfa(佇列優化的bellman-ford):可判斷負環,稀疏圖上效率較高,稠密圖易退化,輸出路徑可用陣列記錄(注意倒序輸出)。**

五、字串

六,資料結構

七、動態規劃

經典問題:樹的重心:以重心為根的有根樹的最大子樹的結點數最小。

樹的最長路徑(最遠點對):找到距離最遠的兩個結點。

樹的中心問題:中心到樹中的其他結點的最遠距離最近。

普通樹形dp:考慮狀態,取或不取。

一些型別:由根分成左子樹和右子樹兩部分:考慮左子樹為空,右子樹為空,左右子樹都非空三種情況

揹包類樹形dp:一般以結點編號作為樹形dp,「體積」作為第二維狀態

求樹的最長鏈問題:對於每個結點i記錄以i為根的子樹到葉節點的最大距離及次大距離,不斷更新,最後相加取最大值

求樹的最大獨立集:考慮每種狀態下的策略問題,從而推出轉移方程

普通樹的dp:依舊是考慮每個節點的狀態,考慮該狀態下的策略

八、數學基礎

資訊學奧賽一本通提高篇題解

感謝齊工大oj提供測試環境 1.1 貪心 活動安排 區間貪心,對於區間,按照右端點公升序排序,然後選擇離前乙個區間最近的不重合區間 種樹 對於區間,按照右端點公升序排序,讓樹盡量種在靠右的地方,用陣列標記狀態 噴水裝置 1.2 二分 憤怒的牛 最小值最大,二分距離mid 對於mid,如果距離大於mi...

資訊學奧賽一本通 小球(drop)

許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個節點的布林值。最初,所有的節點都是false,當訪問到乙個節點時...

資訊學奧賽一本通 小球(drop)

this drop is gonna last forever!許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個...