POJ 2449 Remmarguts' Date(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=2449
題意:經典問題:K短路
解法:dijkstra+A*(rec),方法很多
相關:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1144
該題亦放在搜索推薦題中
POJ 3013 - Big Christmas Tree(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3013
題意:最簡單最短路,但此題要過,需要較好的程序速度和,還要注意精度
解法:Dijkstra
POJ 3463 - Sightseeing(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3463
題意:最短路和比最短路大1的路的數量
解法:需要真正理解dijkstra
POJ 3613 - Cow Relays(較難) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3613
題意:求經過N條邊的最短路
解法:floyd + 倍增,貪心
POJ 3621 - Sightseeing Cows(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3621
題意:求一個環路,歡樂值 / 總路徑最大
解法:參數搜索 + 最短路(ms 原始的bellman tle, 用spfa才過)
POJ 3635 - full tank?(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3635
題意:最短路變形
解法:廣搜
相關:http://hi.baidu.com/hnu_reason/blog/item/086e3dccfc8cb21600e9286b.html
生成樹問題
基本的生成樹就不放上來了
POJ 1639 - Picnic Planning(較難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1639
題意:頂點度數有限制的最小生成樹
解法:貪心 + prim/kruskal
POJ 1679 - The Unique MST(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=1679
題意:判斷MST是否唯一
解法:prim就行,不過還是易錯的題
POJ 2728 - Desert King(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=2728
題意:所謂最優比率生成樹
解法:參數搜索 + prim
POJ 3164 - Command Network(難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3164
題意:最小樹形圖
解法:劉朱算法,這個考到的可能性比較小吧?
POJ 3522 - Slim Span(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3522
題意:求一顆生成樹,讓最大邊最小邊差值最小
解法:kruskal活用
連通性,度數,拓撲問題
此類問題主要牽扯到DFS,縮點等技巧
POJ 1236 - Network of Schools(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=1236
題意:問添加多少邊可成爲完全連通圖
解法:縮點,看度數
POJ 1659 - Frogs' Neighborhood(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=1659
題意:根據度序列構造圖
解法:貪心,詳細證明參見havel定理
POJ 2553 - The Bottom of a Graph(基礎) AC (好題)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2553
出度爲0的強連通分量的所有的點
POJ 2186 - Popular Cows(基礎) AC (好題)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2186
題意:強連通分量縮點圖出度爲0的點
POJ 2762 - Going from u to v or from v to u?(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=2762
題意:單向連通圖判定
解法:縮點 + dp找最長鏈 (我是用 縮點+ 歐拉路判斷,最後證明這方法是錯的)
POJ 2914 - Minimum Cut(難) AC (難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2914
題意:無向圖最小割
解法:Stoer-Wagner算法,用網絡流加枚舉判定會掛
POJ 2942 - Knights of the Round Table(難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2942
題意:求雙聯通分量(或稱塊)中是否含奇圈
解法:求出雙連通分量後做黑白染色進行二分圖圖判定
相關:http://hi.baidu.com/zfy0701/blog/item/57ada7ed104ce9d2b31cb104.html
POJ 3177 - Redundant Paths(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3177 (和3352一樣)
題意:添加多少條邊可成爲雙向連通圖(任意兩點間有兩條不共邊的路徑)
解法:把割邊分開的不同分量縮點構樹,看入度
公式: 入度爲1的leaf個數, ( leaf + 1 ) / 2
POJ 3352 - Road Construction(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3352 (和3177一樣)
題意:添加多少條邊可成爲雙向連通圖(當刪除任意一條邊的時候,圖還保持連通性)
解法:把割邊分開的不同分量縮點構樹,看入度 ( leaf + 1 ) / 2
建議對比下1236,有向圖添加多少條邊變成強連通圖
POJ 3249 - Test for Job(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3249
解法:bfs / dfs + dp
POJ 3592 - Instantaneous Transference(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3592
解法:縮點,最長路,少人做的水題,注意細節 (和 3160 類似)
POJ 3687 - Labeling Balls(中等) AC (莫名其妙,有空再重新看)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3687
解法:拓撲排序
POJ 3694 - Network(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3694
解法:雙連通分量+並查集
2-SAT問題
此類問題理解合取式的含義就不難
POJ 2723 - Get Luffy Out(中等) AC (好題)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2723
解法:二分 + 2-SAT判定
POJ 2749 - Building roads(較難) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=2749
解法:二分 + 2-SAT判定
POJ 3207 - Ikki's Story IV - Panda's Trick(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3207
解法:簡單的2-sat,不過其他方法更快
POJ 3648- Wedding(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3648
解法:用2-sat做會比較有意思,但是暴搜照樣0ms
POJ 3678 - Katu Puzzle(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3678
解法:直接按合取式構圖驗證就行了(本質)
POJ 3683 - Priest John's Busiest Day(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3683
解法:n^2枚舉點之間的相容性構圖,求解2-SAT (要求輸出方案)
POJ 2296 Map Labeler (中等) (第七道)AC
http://poj.org/problem?id=2296
解法:上下邊形成2元關係。然後構完圖,求2-SAT
POJ 3905 Perfect Election(中等) (第八道) AC
http://poj.org/problem?id=3905(好題!)
解法: 建好矛盾,直接就是2-SAT
最大流問題
變形很多,最小割最大流定理的理解是關鍵
POJ 1149 - PIGS(較難) AC (灰常好題!強烈推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1149
絕對經典的構圖題
POJ 1273 - Drainage Ditches(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=1273
最大流入門
POJ 1459 - Power Network(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=1459
基本構圖
POJ 1637 - Sightseeing tour(Crazy) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=1637
題意:求混合圖的歐拉跡是否存在
解法:無向邊任意定向,構圖,詳建黑書P324
POJ 1815 - Friendship(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?i1d=815
題意:求最小點割
解法:拆點轉換爲邊割
相關:http://hi.baidu.com/zfy0701/blog/item/a521f230b06dea9fa9018e0e.html
POJ 1966 - Cable TV Network(中等) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=1966
題意:去掉多少點讓圖不連通
解法:任定一源點,枚舉匯點求點割集(轉換到求邊割),求其中最小的點割
POJ 2112 - Optimal Milking(基礎) AC (好題)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2112
二分枚舉,最大流
POJ 2391 - Ombrophobic Bovines(中等) AC (好題)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2391
題意:floyd, 拆點,二分枚舉
相關:http://hi.baidu.com/zfy0701/blog/item/3e0006c4f73f0eaf8226acff.html
POJ 2396 - Budget(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2396
題意:有源匯的上下界可行流
解法:用矩陣-網絡流模型構圖,然後拆邊
相關:http://hi.baidu.com/zfy0701/blog/item/6449d82a64e15e3e5343c1ba.html
最小割模型在競賽中的應用
POJ 2455 - Secret Milking Machine(基礎) AC (好題)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2455
二分枚舉,一般來說需要寫對邊容量的更新操作而不是每次全部重新構圖
POJ 2699 - The Maximum Number of Strong Kings(較難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2699
解法:枚舉人數 + 最大流(感謝xpcnq_71大牛的建圖的提示)
POJ 2987 - Firing(較難) AC (經典)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2987
題意:最大權閉包
解法:先邊權放大,第一問總量-最大流,第二問求最小割
相關:http://wywcgs.spaces.live.com/blog/cns!4D861A02A3382142!1109.entry?&_c02_owner=1
RQNOJ 最大獲利Profit(中等) AC (經典)
http://www.rqnoj.cn/Problem_556.html
最大權閉包圖的特殊情況
ZOJ 2071 - Technology Trader AC
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2071
也是此類型,最大權閉包圖。 多加了輸出 買哪些組件,使效益最大。
POJ 3084 - Panic Room(中等,好題)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3084
題意:略
解法:根據最小割建模
POJ 3155 - Hard Life(很挑戰一題) AC (難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3155
題意:最大密度子圖
解法:參數搜索 + 最大權閉合圖,A.V.Goldberg的論文(nb解法)
最小割模型在信息學競賽中的應用 一文中也有講
POJ 3189 - Steady Cow Assignment(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3189
題意:尋找最小的區間完成匹配
解法:這題充分說明SAP的強大,純暴力可過。更好的方法是在枚舉區間的過程中不斷刪邊和加邊繼續網絡流過程
POJ 3204 - Ikki's Story I - Road Reconstruction(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3204
ZOJ 2532 - Internship(基礎)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2532
題意:確定邊是否是某個割中的邊
解法:兩邊dfs求割, 或暴力枚舉(需要寫取消某條增廣路的操作(但數據弱,也許不取消也能混過))
POJ 3308 - Paratroopers(較難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3308
POJ 2125 - Destroying The Graph(難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2125
題意:最小點權覆蓋
POJ 3469 - Dual Core CPU(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3469
題意:最小割
POJ 3498 - March of the Penguins(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3498
題意:滿足點容量限制的網絡流
解法:拆點把點容量轉換爲邊容量,枚舉匯點
ZOJ 2587 - Unique Attack(較難)
http://acm.zju.edu.cn/show_problem.php?pid=2587
題意:確定最小割是否是唯一的
解法:得理解dfs求最小割算法的本質
SPOJ 839 - Optimal Marks(難)
http://www.spoj.pl/problems/OPTM/
題意:略
解法:很經典哦,見amber的集訓隊論文,根據標號的每一位求最小割
SGU 326 - Perspective(中等)
http://acm.sgu.ru/problem.php?c0&problem=326
比較經典的構圖法
費用流問題
可以KM解的就不放在這裏,另外,感覺除非很特殊的圖,一般用連續增廣路的算法就夠了
POJ 2175 - Evacuation Plan(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2175
題意:判斷是否給定解是最優解,比較陰的一題
解法:根據給出的計劃構造流,然後消且只消一次負圈
POJ 3422 - Kaka's Matrix Travels(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3422
題意:略
解法:拆點
POJ 3680 - Intervals(較難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3680
題意:略,這題還是蠻經典
解法:discuss中比較詳細
SPOJ 371 - Boxes(簡單)
http://www.spoj.pl/problems/BOXES/
題意:略
解法:費用流,但似乎有比網絡流更好的做法
SGU 185 - Two shortest(中等)
http://acm.sgu.ru/problem.php?c0&problem=185
題意:求兩條不想交的最短路徑
解法:費用流,也可以最短路 + 最大流。
匹配問題
正確理解KM算法是很重要的
這裏我還要說幾句:最正確解最小權匹配的辦法是用一個很大的數-當前邊權值,而不是直接對邊權取反(這樣只能處理左右點相等的完全二分圖,即K(n, n)
以上有可能還是說的有點問題,以後補充
POJ 1486 - Sorting Slides(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1486
題意:二分圖的必須邊
解法:需正真理解最大匹配算法,詳見http://hi.baidu.com/kevin0602/blog/item/1d5be63b5bec9bec14cecb44.html
POJ 1904 - King's Quest(中等,好題)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1904
題意:求二分圖所有可能的匹配邊
解法:雖然最終不是用匹配算法,但需要理解匹配的思想轉換成強連通分量問題。
POJ 2060 -Taxi Cab Scheme(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2060
題意:最小路徑覆蓋
POJ 2594 -Treasure Exploration(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2594
題意:可相交最小路徑覆蓋
解法:先傳遞閉包轉化下
POJ 3041 - Asteroids(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=3041
解法: 簡單行列匹配
POJ 2226 - Muddy Fields(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2226
題意:行列的覆蓋
解法:最小點集覆蓋 = 最大匹配
POJ 2195 - Going Home(基礎) AC
http://acm.pku.edu.cn/JudgeOnline/problem?id=2195
題意:最小權值匹配
解法:KM算法
POJ 2400 - Supervisor, Supervisee(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2400
題意:輸出所有最小權匹配
解法:KM, 然後回溯解,汗,輸入的兩個矩陣居然是反過來的
POJ 2516 -Minimum Cost(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2516
題意:最小權值匹配或最小費用流
解法:拆點 + KM算法(只有正確的才能過),費用流(ms錯的可能也能過)
POJ 3686 - The Windy's(較難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3686
題意:最小權值匹配
解法:拆點,然後儘管用KM算法去水吧,數據其實弱得不得了 O(50 * 50 * 2500) -> 16ms
相關:http://hi.baidu.com/kevin0602/blog/item/2829dc01d7143b087bec2c97.html
SPOJ 412 - K-path cover(較難)
https://www.spoj.pl/problems/COVER/
題意:略
解法:很牛叉的一道匹配
相關:http://hi.baidu.com/roba/blog/item/c842fdfac10d24dcb48f31d7.html
SGU 206. Roads(較難)
http://acm.sgu.ru/problem.php?c0&problem=206
解法:經典題目,也可以使用spoj 412那題的優化
NP問題
一般是搜索或dp解的
POJ 1419 - Graph Coloring(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1419
題意:圖的着色
解法:搜索,可惜題目的數據真是太弱了
POJ 2989 - All Friends(難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2989
題意:極大團數量
解法:開始狂tle, 後來找了論文:Finding All Cliques of an Undirected Graph(Coen Bron & Joep Kerboscht)
ZOJ 1492 - Maximum Clique(基礎)
http://acm.zju.edu.cn/show_problem.php?pid=1492
題意:圖的最大團
解法:搜索,如果要求速度,可參考下相應論文
其他
不能成大類的
POJ 1470 - Closest Common Ancestors(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1470
題意:LCA問題
解法:tarjan或RMQ,另外輸入很噁心
POJ 1985 - Cow Marathon(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1985
題意:樹上的最長路徑
解法:dp
POJ 1986 - Distance Queries(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1986
題意:LCA
解法:tarjan或RMQ
HOJ 11192 - Justice League(有趣的圖論)
http://acm.hnu.cn:8080/online/?action=problem&type=show&id=11192&courseid=99
HOJ 11277 - New Island(有趣的圖論)
http://acm.hnu.cn:8080/online/?action=problem&type=show&id=11277&courseid=109
====================================================================================================
1062* 昂貴的聘禮
解法:枚舉等級限制+最短路
交易過程中等級最高和最低的差小於m
1087* A Plug for UNIX (HDU1526)
解法:2分匹配
調製器無限,用floyd傳遞插口轉換,然後就是2分匹配
1094 Sorting It All Out
解法:floyd + 拓撲排序
先用floyd判斷自環(或用Tarjan),拓撲判斷是否能確定序列
1112* Team Them Up! 2分圖染色+DP (ZOJ1462)
1125 Stockbroker Grapevine
解法:floyd
FLOYD,然後求每個點到其他點的最短時間和
1135 Domino Effect (ZOJ1298)
題意:有n個關鍵骨牌 (1 <= n < 500),m列骨牌。整個多米諾骨牌圖是聯通的。
m列骨牌描述如下:a,b,i,表示這排骨牌是在關鍵骨牌a到b之間的,從一頭到另一頭倒下需要i秒。
總是從n=1的骨牌開始推倒。 輸出最後倒下的骨牌的倒下時間和位置(最後倒下的是某個關鍵骨牌,或者某兩個關鍵骨牌之間)
數據二的圖形,可看出,最後倒的在2,3中間位置。
解法:最短路
求出骨牌1到其他骨牌的最短路,最後倒下的是某個關鍵骨牌,或者某兩個關鍵骨牌之間
1149* PIGS
題意:有M個豬圈(M<=1000),每個豬圈裏初始時有若干頭豬
一開始所有的豬圈都是關閉的.
一次來了N個顧客(N<=100) , 每個顧客分別會打開指定的幾個豬圈,從中買若干頭豬
每個顧客分別有他能夠買的數量的上限.
每個顧客走後,他打開的豬圈中的豬可以任意給調換到其他開着的豬圈裏,然後所有豬圈從新關上.
問:總共最多能賣出多少頭豬.
解法:分層網絡流
可以把豬圈分層建邊,但是節點數要10W。有更優秀的建邊方法
請移步這裏
1161* Walls
解法:floyd
將區域作爲頂點,如果兩個區域鄰接(有公共邊),就連邊,權值爲1
注意:輸入區域的點的順序(順逆時針)
以此建圖,用floyd算法算出每個頂點間的最短距離,然後就是窮舉每個頂點。
使每個俱樂部的成員到(所在村莊)達該頂點的距離之和最小
村莊到區域的距離即:將村莊作爲點的區域(頂點)到枚舉頂點的距離
1201 Intervals
解法:差分約束
約束條件:s[b]-s[a-1] >= c , 0 <= s[i+1]-s[i] <= 1
1236* Network of Schools
題意:問添加多少邊可成爲完全連通圖
解法:基礎強聯通
縮點,看度數
1251 Jungle Roads
解法:基礎最小生成樹
1273 Drainage Ditches
解法:基礎最大流
注意輸入時先輸邊數n,再是點數m
1274 The Perfect Stall
題意:牛和擠奶器最大匹配
解法:基礎二分匹配
1275* Cashier Employment (神題)
解法:差分約束
ti[i] 表示從 i 開始工作的人數 ,s[i] 表示 0-i 總共僱傭了多少人 , r[i] 表示 i 所需的至少人數
ti[i-7]+ti[i-6]+...ti[i] >= r[i] ( 表示前8小時開始工作的人數 )
設:s[i]-s[i-8] = ti[i-7]+ti[i-6]+...ti[i]
0 <= S[i]-S[i-1] <= ti[i]
約束條件:①S[i]-S[i-1] >= 0 ②S[i-1]-S[i] >= -ti[i]
③S[i]-S[i-8] >= r[i] ( i>=8 ) ④S[23]+S[a]-S[a+16] >= r[i] ( i<=7 ) ==> S[a]-S[a+16] >= r[i]-S[23]
⑤*注意:S[24]-S[0]>=mid //這句話要記得
1325 Machine Schedule
解法: 二分匹配(最小點覆蓋)
最小點覆蓋:選取最少的點數,使這些點和所有的邊都有關聯(選擇最少的點覆蓋所有的邊)
1364 King
解法:差分約束
gt: s[a+b]-s[a-1]>c ==> s[a+b]-s[a-1]>=c+1
lt: s[a+b]-s[a-1]<c ==> s[a-1]-s[a+b]>(-c)
超級源點: s[i]-s[n+1] >= 0
1422 Air Raid
1459 Power Network解法:二分匹配 (最小路徑覆蓋)
(傘兵) 最小路徑覆蓋:用最少的不相交簡單路徑覆蓋所有結點。
有向圖:ans = n - match() , 無向圖: ans = n - ( match() +1 ) / 2
解法:基礎網絡流
1466 Girls and Boys
解法:二分匹配 ( 最大獨立集 )
最大獨立集 = 頂點數 - 最小點覆蓋
由於最小點覆蓋所有邊,所以去掉這些點後,剩下的點之間就沒有關聯邊,即互相獨立
1469 COURSES (HDU1083)
解法:二分匹配(完全匹配 )
1502 MPI Maelstrom
題意:計算從1發送信息到其他n-1個點最短時間 , 並且信息是同時發出去的
解法:最短路
計算1到其他n-1個點的最短時間,再取最大即可(因爲信息是同時發的)
1511* Invitation Cards (HDU1535)
解法:最短路
來回最短路(單向): 正向建邊 , 可以計算出S到任意點的最短路。
反向建邊,那麼S到任意點的最短路就相當於從任意點回來S的最短路
1637* Sightseeing tour
解法:混合歐拉回路
單向邊:無用,刪 in[b]++ ; out[a]++
雙向邊:隨意定向 in[b]++ ; out[a]++
【建圖】x = in[i]-out[i]
①如果x是奇數,肯定不存在歐拉回路
②如果x>0 (入>出) 連 i -> T 容量: x/2
③如果x<0 (入<出) 連 S -> i 容量:-x/2
【判斷】是否滿流
1716 Integer Intervals
題意:和1201一樣
解法:差分約束
① s[b+1]-s[a]>=2 ② 0 <= s[i+1]-s[i] <= 1
③ s[i]>=0 (第③個是建超級源點的條件,這裏可以不要)
1724* ROADS
解法:帶限制的最短路
方法① 將每個點拆分,開二維 dis[ i ][ j ] 記錄。表示到達節點 i 總共花費 j 的金錢所需的最短路 ( j<=K )
方法②廣搜bfs() + 優先隊列
1734 Sightseeing trip
解法:Floyd 求最小環 + 輸出路徑
- void floyd() { // 最小環模板
- int i,j,k,w,v;
- d=inf;
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++) path[i][j]=j,dis[i][j]=e[i][j];
- for(k=1;k<=n;k++) {
- //新增部分,求最小環
- for(i=1;i<k;i++) if(e[i][k]!=inf)
- for(j=1;j<i;j++) if(e[k][j]!=inf) {
- if(dis[i][j]==inf) continue;
- if(d>dis[i][j]+e[i][k]+e[k][j]) {
- d=dis[i][j]+e[i][k]+e[k][j];
- // 記錄路徑
- len=0; s[0]=k; v=i;
- while(v!=j) s[++len]=v,v=path[v][j];
- s[++len]=j;
- }
- }
- //通常的floyd部分
- for(i=1;i<=n;i++) if(dis[i][k]!=inf)
- for(j=1;j<=n;j++) if(dis[k][j]!=inf)
- if(dis[i][j]>dis[i][k]+dis[k][j])
- dis[i][j]=w , path[i][j]=path[i][k];
- }
- }
1780* Code (好題)
題意:要求所有的n位數編碼成一個數字串,每個n位數只出現一次
解法:歐拉回路
可以把n位數看成邊,那麼可以把它的前n-1位看成點A,後n-1一位看成點B,
那麼它就是A->B的一條邊。找一次歐拉回路就行了。
此題要用棧模擬遞歸函數!!!
1789 Truck History
解法:最小生成樹( prim 或 kruskal)
1797 Heavy Transportation
解法:最小生成樹 或 最短路 或 dfs
二分枚舉下限,用最小生成樹 或 最短路 或 dfs 判斷 1 和 n 是否連通
1847 Tram
解法:簡單最短路
1904* King's Quest 強聯通
1949 Chores
解法:最短路
反向建圖 建立超級源點S=0 ,連接入度爲0 的點,邊權爲 0
點 i 和 prerequisites ( j ) , i 連 j ,邊權爲 time[ i ]
然後求最長路
PS: 正向建邊,不知道哪裏錯了,一直TLE
2060 Taxi Cab Scheme
解法:二分匹配 (最小路徑覆蓋)
2075 Tangled in Cables
解法:最小生成樹
2112 Optimal Milking
解法:二分+網絡流
二分最遠距離,建可行邊,判斷是否符合要求
2125 Destroying The Graph
解法:最小割(最小點權覆蓋)
最小點權覆蓋:最小點權覆蓋所有的邊 (等同於最大獨立集)
拆點並將點權轉成邊權。
i 和 i+n 分別表示出入,S 連 i 刪出邊的權, i+n 連 T 刪入邊的權。 求最小割。
2135 Farm Tour
題意:無向圖,從起點到終點,再從終點到起點。不能走重複的邊。求最短路程。
解法:費用流
相當於找兩條從起點到終點不重複的路徑。
S 連起點,容量2 費用0 , 終點連 T,容量2 費用0拆邊: i 連 j ,j 連 i 容量1 , 費用邊權w
2139 Six Degrees of Cowvin Bacon
題意: 類似 HDU1869 六度分離
這裏求的是以哪個人 i 爲中心,到其他人的分離度的平均值最小,求最小值
解法: Floyd
相當於求 i 到其他人的距離總和最小, 最後 avg = sum*100 / (n-1) 即可
2226 Muddy Fields
題意:用最少的木板覆蓋所有的muddy,且木板不能覆蓋到草地
解法:二分匹配 (行列匹配)
拆行和拆列(一行拆成多行),把每一行連續的 * 看做一“行”,把每一列連續的 * 看做一“列”
再對每一個 * 所對應的 “行” 和 “列” 連邊,求二分匹配
2230 Watchcow
題意:無向圖,從1出發經過每條邊2次回到1。輸出路徑
解法:歐拉回路
拆無向邊爲有向邊,a->b b->a ,就變成了每條邊經過一次的歐拉回路。從1做一次歐拉就可以了
2239 Selecting Courses
解法: 基礎二分匹配
2267* From Dusk till Dawn or: Vladimir the Vampire 最短路
2289 Jamie's Contact Groups (HDU1669)
解法:二分+二分圖多重匹配 (或 二分答案+網絡流)
2296 Map Labeler
解法:2-Sat (二分枚舉答案)
2337 Catenyms
解法:歐拉路徑
①用並查集判斷連通性
②判斷入度和出度是否滿足
歐拉回路-> 入度=出度
歐拉路徑-> 只有一個,入度-出度=1 ; 只有一個,出度-入度=1
2349 Arctic Network
題意: 有衛星電臺的城市之間可以任意聯絡。沒有衛星電臺的城市只能和距離小於等於D的城市聯絡。題目告訴你衛星電臺的個數S,讓你求最小的D.
做最小生成樹,去掉最長的S條邊後,剩下最長的邊就是D.
也就是求最小生成樹中第S+1長的邊。
解法:最小生成樹
2367 Genealogical tree
解法:基礎拓撲排序
2387 Til the Cows Come Home
解法:基礎最短路
2391* Ombrophobic Bovines
解法: 二分+網絡流
S 連 i (牛) 容量: 牛的數量
i+n (棚) 連 T 容量: 能hold牛的個數
i 連 j+n 容量:inf (表示可行流)
PS: const ll inf=9999999999999999ll; up=inf (上界) WA
up=9999999999999999ll AC
2394 Checking an Alibi
題意: 給你無向圖,兩點間花費的時間。再給你每個牛所在的位置。
解法:最短路給定一個time , 問你那些牛可以在time時間內到達 1
2396* Budget 上下界網絡流
2421* Constructing Roads
解法:基礎最小生成樹
2446 Chessboard
題意:去掉k個洞,剩下的點能不能用1X2的矩形完全覆蓋
解法:二分匹配
相連的2點進行匹配,判斷是否是完全匹配
2455 Secret Milking Machine
解法:二分+網絡流
注意重邊也要!
2457 Part Acquisition
解法:最短路 (輸出路徑)
2472 106 miles to Chicago
解法:最短路
求邊乘積最大,將其化成對數,就是加起來最大。讓後就是裸的最長路了
2485 Highways
解法:基礎最小生成樹
2516 Minimum Cost 費用流
2536 Gopher II
解法:基礎二分匹配
2553* The Bottom of a Graph
解法:強連通
出度爲0的點,它們能到達的點V,V都能到達它們
2570 Fiber Network floyd
2584 T-Shirt Gumbo 網絡流
2594* Treasure Exploration
解法:floyd傳遞性+二分匹配(最小路徑覆蓋)
2723 Get Luffy Out
解法:二分+2-Sat
2-Sat的本質就是:一件物品選了,對另一件物品的影響。
每個物品有2個狀態: 選,不選 。即 x 和 ~x
如 x y 。選了x,y鑰匙就會消失。那麼選了x就不能選y, 即選了x就選 ~y (非y)
2724 Purifying Machine 2分匹配
2728 Desert King 最優比例生成樹
2749* Building roads (好題!)
解法:二分+2-Sat
建矛盾: hate的必須分開,
like的必須栓在同一個點
距離矛盾:① dis1[ i ] + dis1[ j ] > mid
② dis2[ i ] + dis2[ j ] > mid
③ dis1[ i ] + dis2[ j ] + dis > mid
④ dis2[ i ] + dis1[ j ] + dis > mid
記:dis1 表示 cow 到 s1 的距離 , dis2 表示 cow 到 s2 的距離 , dis 表示 s1 到 s2 的距離。
2762 Going from u to v or from v to u?
解法:強連通+拓撲
強連通縮點,同一分量的不需要考慮了。
不屬於同一強連通分支的點就用拓撲排序來判斷,如果某次刪除點的時候發現兩個入度爲0的點,則說明這兩個點只能由已經被刪掉的點到達。
也就是說這兩個點互相不可達。所以只要同時出現了多於一個的0入度的點,那麼這個圖一定是不符合題目要求的,輸出"No".
注:用歐拉路徑判斷是錯的,以下數據
5 8
1 2 1 3 1 5 2 4 2 5 3 4 5 3 5 4
2949* Word Rings 差分約束
2983 Is the Information Reliable?
解法:差分約束
P: c<=s[a]-s[b]<=c
V: 1<=s[a]-s[b]
超級源點: addedge( 0 , i , 0 )
注意:不要忘記建超級源點!!!
2987 Firing 最小割(求解正確性??)
3041 Asteroids 2分匹配
3072* Robot 最短路
3114 Countries in War 強聯通+最短路
3160 Father Christmas flymouse 強聯通+最長路3164 Command Network 最小樹形圖
3169 Layout 差分約束
3177 Redundant Paths 雙聯通分量
3189 Steady Cow Assignment 網絡流
3204 Ikki's Story I - Road Reconstruction 最大流3207 Ikki's Story IV - Panda's Trick 2分圖
3216 Repairing Company 2分匹配
3228 Gold Transportation 網絡流
3255 Roadblocks 最短路
3259 Wormholes 最短路
3268 Silver Cow Party 最短路
3275 Ranking the Cows dfs
3281 Dining 最大流
3308 Paratroopers 最小割3310 Caterpillar
3311 Hie with the Pie floyd
3328 Cliff Climbing 最短路
3343 Against Mammoths 2分匹配
3352 Road Construction 橋
3439 Server Relocation 最短路
3463 Sightseeing 最短路3469 Dual Core CPU 最小割
3487 The Stable Marriage Problem 穩定婚姻
3522 Slim Span 最小生成樹3594 Escort of Dr. Who How 最短路
3615 Cow Hurdles 最短路
3623 Wedding 2-sat
3653 Here We Go(relians) Again 最短路3659* Cell Phone Network 最小支配集
3660 Cow Contest 拓撲
3662* Telephone Lines 最短路
3678 Katu Puzzle 2-sat
3683* Priest John's Busiest Day 2-sat求解
3687 Labeling Balls 差分約束 或 拓撲
3692 Kindergarten 2分匹配
3694 Network 無向圖縮點
3723 *Conscription 最小生成樹