原创 KMP算法詳解(轉自Matrix67大牛)

如果機房馬上要關門了,或者你急着要和MM約會,請直接跳到第六個自然段。    我們這裏說的KMP不是拿來放電影的(雖然我很喜歡這個軟件),而是一種算法。KMP算法是拿來處理字符串匹配的。換句話說,給你兩個字符串,你需要回答,B串是否是A串

原创 sscanf 用法詳解

      名稱: sscanf() - 從一個字符串中讀進與指定格式相符的數據.   函數原型: Int  sscanf( string str, string fmt, mixed var1, mixed var2 ...

原创 POJ 2455 Secret Milking Machine(二分答案+最大流)

感謝懷哥提供的經典好題,讓我學會了二分答案這個思想! //二分答案+最大流 //終於見識到傳說中的二分答案這個方法了 //如果沒有二分答案這個提示,這道題我怎麼也不會往最大流去想 //思路是這樣的,將所有邊權值排序,記錄邊權值的上界和下界

原创 POJ 1657 Distance on Chessboard(搜索題)

//搜索題,王用寬搜解決,後用點和點的斜率解決,只有兩種情況,要麼1,要麼2。 //車直線判斷即可,要麼1,要麼2。 //象斜率判斷加所在格子的黑白情況進行判斷,我想出了一個好方法。行列同奇同偶,爲白色,行列奇偶互異爲黑色。 //象如果在

原创 POJ 2594 Treasure Exploration(傳遞閉包+最小路徑覆蓋)

//傳遞閉包的建立(Floyd) + 最小路徑覆蓋 //這題有別於1422,原因在於它是一個有向圖,而非DAG,機器人可以繞一圈回來在走其他路 //the roads of two different robots may contain

原创 POJ 2135 Farm Tour(最小費用流)

//最小費用流 //構圖關鍵是添加超級源點,超級匯點 //題意是要找一條可以再終點往返的路,這2條路距離之和最短且每條路只能經過一次 //第一步將問題轉化爲找2條從起點到終點 //第二步與費用流掛鉤,將距離當做費用,將容量設置爲1是爲了保

原创 POJ 3311 Hie with the Pie(Floyd+狀態壓縮DP)

//Floyd + 狀態壓縮DP //題意是有N個城市(1~N)和一個PIZZA店(0),要求一條迴路,從0出發,又回到0,而且距離最短 //也就是TSP(旅行商)問題,首先不難想到用FLOYD先求出任意2點的距離dis[i][j] //

原创 ZOJ 3368 Trick or Treat(二分答案)

//二分答案,注意精度只需要滿足1e-5,無需跟sample一樣也可AC //題意是求一個點(x,0)使得其他點到它的最大距離最小 #include<iostream> #include<cmath> using namespace st

原创 POJ 1157 LITTLE SHOP OF FLOWERS(動態規劃)

//動態規劃 //設S[i,k]表示第i種花束擺在第k個之前(包括第k個)的任意某個花瓶中,前i種花束能夠獲得的最大美學值(之和) //原問題的最優值即爲S[F,V] //S[i,k] = max{S[i-1,k-1]+A(i,k),S[

原创 POJ 1102 LC-Display(模擬題)

//模擬題 //將每個數字從上到下劃分成5個部分,將打印分爲5種類型 //1:空白 2:- 3:左| 4:右| 5:| |兩豎,同時設置5個部分的打印接口 //接着LCD數組存放這個每個數字每個部分的打印類型 #include<i

原创 POJ 2516 Minimum Cost(二分圖最小權匹配——KM算法)

//最小權匹配(KM算法) //構圖是關鍵,又是拆點這個思想。因爲商品數量很少,最多才3,所以將一個商品拆成3個點 //一開始我將K種商品全部拆出來,想一次KM解決,結果構出來的圖最壞情況是50*50*3 和50*50*3 的二部圖來匹配

原创 Sicily 1153 馬的周遊問題(DFS深度優先搜索)

//經典的深度優先搜索,必須剪枝才能通過,而且剪枝策略十分神奇,先走下一步可行拓展數最少的,看了大牛的題解纔會的 //也就是說假如當前結點有8個可以走的拓展點,對每個可行拓展點再計算它的可行拓展數,然後排序,先走那個可行拓展數最小的 //