原创 A*與IDA*算法

A*   A*算法是基礎的啓發式算法,常使用“估價函數”減少選擇來用於優化搜索的速度。對於當前的狀態,我們知道當前已經用了的代價,那麼我們可以設計一個估價函數ff 來估計未來的狀態,當前代價+未來代價作爲這個狀態的預估總代價。

原创 廣搜與廣搜變形

廣搜 相較於深度搜索的一條路走到黑,廣度搜索如其名是逐層搜索,一次把整一層搜完。我們用一個隊列來實現,每次取出隊頭,對於隊頭狀態的所有分支,把沿着分支所能達到的下一個狀態(如果這個狀態沒被訪問過或者可以形成更優的解)插入隊尾,直到

原创 [POJ1743]Musical Theme(後綴數組+二分 / 後綴自動機)

傳送門 複習了後綴數組。 首先因爲轉調我們需要對字符串作差。 考慮二分+後綴數組的做法。 二分答案k,將連續的height[i]>=x的段分組,如果一組內sa的最大值與最小值的差>=k,則k可行。 後綴自動機也是可以的。

原创 [BZOJ5290][HNOI2018]道路(DP)

傳送門 Day2的題目順序很有問題啊,竟然把最簡單的題放T3。。 不難發現是一個完全二叉樹,然後公路連左孩子,鐵路連右孩子。 就是一個類似於一個樹形dp的東西,突破的關鍵就在原題中的一個隱晦的條件 任意鄉村可以通過不超過4

原创 [BZOJ4516][Sdoi2016]生成魔咒(後綴自動機)

傳送門 學了一個下午+一個晚上+一個上午的後綴自動機。。 主要看的是clj的課件以及menci的博客 本來想寫學習筆記的,然而要GDOI了,所以之後在寫啦! 首先我們知道SAM中一個節點vv 中長度最小和最大的子串的長度分別

原创 [POJ2054]Color a Tree(貪心)

傳送門 題意:有一棵樹,每個節點都有一個權值Ci。現在要給每個點染色,第一個染根節點,其餘的節點染色的時候其父節點必須已染色。每個節點染色會用掉一個時間單位,每個節點染色的代價是已經花的時間t*Ci。問染完全部節點所需要的最小代

原创 [BZOJ5288][Hnoi2018]遊戲(暴力+隨機化)

傳送門 首先我們考慮暴力做法。 考慮預處理,一開始把相鄰的門沒鎖的點看作一個塊(那麼塊中互相可以到達),記下左右端點。判斷塊左右的門鎖在不在這個塊裏面,如果有就往左右拓展塊,要不然就退出。 然而如果這樣的話在最壞情況,也就是

原创 AFO

AFO一年了,才mark這篇blog,算是空了很多行的句號吧。 那麼就這樣吧,拜拜!

原创 [BZOJ1791][IOI2008]島嶼Island(基環樹的直徑)

傳送門     先轉換一下題目所給的圖:     給一個n個點n條邊的圖,不一定連通,但是不連通的地方可以用沒有權值的虛邊連接起來,既然可以任意連虛邊那麼我們就可以把原圖中的一個個塊分開處理。     然後分析這是什麼圖,因爲一定有

原创 [BZOJ3037/CH6401]創世紀(貪心)

傳送門 首先分析題目所給的樹結構,將x與x控制的點a[x]連一條有向邊,原圖就變成了一個內向樹森林。 這題放在了基環樹的tag下,然後正解是一個樹形dp,但是我思考了一下,我發現可以從內向樹的最外圈一層一層往裏面推進,但是轉移的時候

原创 [POJ3417]Network/闇の連鎖(樹上差分)

題目描述 傳說中的“闇の連鎖”被人們稱爲DarkDarkDark。DarkDarkDark 是人類內心的黑暗的產物,古今中外的勇者們都試圖打倒它。經過研究,你發現DarkDarkDark呈現無向圖的結構,圖中有 NNN 個節點和兩類邊

原创 [CH6202]黑暗城堡(最短路徑生成樹)

傳送門     通過學習我們可以發現原題目要求的樹結構就是“最短路徑生成樹”,什麼是最短路徑生成樹呢?就是一張圖的源點到圖中的所有結點的最短路徑構成的樹,爲什麼他滿足樹結構呢?因爲假設有n個點,因爲是最短路徑一定只有n-1條邊把他連

原创 Floyd的三種有趣的玩法

引言    衆所周知,Floyd是一個思路和實現都很簡單的多源最短路徑算法,原理是一種動態規劃的思想,這裏就不贅述太多,在做《算法競賽進階指南》中關於Floyd的題目中遇到的三種Floyd可以解決的問題,建議大家在閱讀本文之前先熟悉F

原创 [BZOJ1233][Usaco2009Open]乾草堆tower(單調隊列優化)

傳送門 題意搞skr人…,其實就是堆方塊: 有n(n<=100000)個乾草,每堆有個寬度,現在要且分成若干段,把每一段的乾草按順序堆起來形成一個多層的乾草堆(所以下標越小的乾草堆放在越下面)且寬度要逐層非嚴格遞減(上面一層的寬度<=

原创 [BZOJ2200][Usaco2011 Jan]道路和航線(拓撲排序+Dijkstra)

傳送門 看上去就是要到最短路,但是這題數據經過構造會卡SPFA(大家都嫌棄他嚶嚶,but可以用SLF優化水過),且因爲有負權會卡Dijkstra。 那麼我們觀察題意,發現只有單向邊是有負權的,雙向邊沒有負權,且單向邊不會構成環!那麼