一、貪心演算法
按照結束時間由小到大的順序排列,依次考慮各個活動,如果沒有和已經選擇的活動衝突,就選;否則就不選。
首先按照區間的結束位置從小到大排列。然後在區間中進行選擇:對於當前區間,若集合中的點不能覆蓋它,則將區間末尾的數加入集合。
貪心策略:取最後乙個。
將所有區間
按照左端點由小到大排序,依次處理每個區間。每次選擇覆蓋點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,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個...