原创 hdu1269——迷宮城堡——————【雙向並查集判斷】
解題思想:通過利用設定1爲根節點,然後建立以1爲根的樹,查找時,如果所有節點都是以1爲根,則說明單向互通;然後再逆序採用相同的操作,如果逆序得到的所有節點也是以1爲根,則說明逆向互通,此時說明圖爲強連通圖。這裏用兩個父親數組來完成正向和逆
原创 大數階乘——————數組模擬
突然發現大數階乘還能用這麼簡單的數組模擬,但是感覺複雜度好像有點高,一次運算是n*MAXN的複雜度,雖然空間複雜度比較低。 #include<stdio.h> #include<string.h> const int MAXN = 500
原创 hdu1269——迷宮城堡——————【kosaraju】
概念解釋 [強連通]——有向圖G中,任意點對能相互到達,即存在路徑,則稱爲強連通。 [連通分量]——指的是無向圖中的極大連通子圖。一個連通圖的生成樹是一個極小連通子圖。
原创 HDU2063——過山車——————【二分圖最大匹配模板】
/** 未蓋點:不與任何匹配邊鄰接的點 匹配點:匹配邊相連的頂點 匹配:兩兩沒有公共點的邊集 交替路:從未蓋點出發,依次經過非匹配邊,匹配邊,非匹配邊....所得到的路徑 增廣路:交替路的終點是一個未蓋點。
原创 hdu1728——逃離迷宮——————【BFS】
解題思路:通過曾經一個計數數組,將所有可到達該點位置的轉彎次數更新爲最小值,最後通過比較目的位置的轉彎次數來判斷是否能夠到達。 #include<stdio.h> #include<iostream> #include<string.h
原创 hdu1350——Taxi Cab Scheme——————【最小路徑覆蓋、最大匹配轉化】
/* 解題思路: 本題目模型是DAG的最小路徑覆蓋。最小路徑覆蓋可以轉化成最大匹配求解。 解法:將所有節點i拆爲點Xi和點Yi,如果圖中存在有向邊i
原创 0-1分數規劃
轉自:http://www.cnblogs.com/perseawe/archive/2012/05/03/01fsgh.html 【關鍵字】 0/1分數規劃、最優比率生成樹、最優比率環 【背景】 根據樓教主的回憶錄,他
原创 最大流Dinic模板
</pre><p>//複雜度O(n^2*m)</p><pre name="code" class="cpp">#include<bits/stdc++.h> using namespace std; const int maxn=650;
原创 poj3254——Corn Fields——————【狀態壓縮】
/** 解題思路:首先將原圖每一行當做一個二進制數,按位取反得到另一個十進制數。然後求出在所給的列的範圍內的合法狀態,即沒有任意兩個1相鄰,放入數組legal中,每種合法狀態對應數組的一個下標。再單獨求出第一行的所有可行狀態,將d
原创 POJ3349-Snowflake Snow Snowflakes
轉自:優YoU http://user.qzone.qq.com/289065406/blog/1304831877 大致題意: 在n (n<100000)個雪花中判斷是否存在兩片完全相同的雪花,每片雪花有6個角,每個角的
原创 hdu1238——Substrings——————【求多個字串的最長公共子串】
/** 解題思路:因爲給的數據範圍比較小,所以就是暴力思想。首先找出最短的串,然後從短到長截取子串,遍歷除最短串以外的其他串,看是否含有相同的子串。 */ /* 題目大意:給t組測試數據,每組有一個n,代表有n個字符串,求n個字符
原创 hdu2126——Buy the souvenirs——————【01揹包記錄物品最多時種數】
/** 解題思路:多加一維表示物品個數。dp[j][k]代表揹包容量爲j,物品個數爲k時的組合種類數目。 */ /* 題目大意:給你n種物品,有m塊錢,然後給出n種物品的花費,問物品個數最多時的組合種數有多少。 */ #inc
原创 poj1321——棋盤問題——————【狀態壓縮、動態規劃】
/* 解題思路:首先確定各個狀態值對應的二進制中有幾個1。然後初始化dp[0][0]爲一種解決方案,雖然不會計入最後的結果。但是卻影響着下面每行的計算。只對二進制中1的個數小於等於k的狀態值操作,枚舉每種狀態值。本行j狀態值下的方案
原创 最大流ISAP模板
//複雜度O(n^2*m)一般比dinic快些 #include<bits/stdc++.h> using namespace std; struct Edge{ int from,to,cap,flow; }; const in
原创 nyoj85——炮兵陣地——————【狀態壓縮、動態規劃】
/** 結題思路:用dp[r][i][j]表示第r行r行狀態爲i,r-1行狀態爲j時的最大可部署炮兵的個數。通過求解合法狀態,縮小需要遍歷的狀態範圍。同時求出各個合法狀態的二進制中1的個數,然後特殊處理首行,然後dp求解每行每種可行