原创 拓撲排序(判斷是否是有向無環圖)

要進行拓撲排序之前,該圖要是有向無環圖。 排序方法: 1、從有向圖中選取一個沒有前驅的頂點,並輸出之 ;2、從有向圖中刪去此頂點以及所有以它爲尾的弧; 3、重複上述兩步,直至圖空,或者圖不空但找不到無前驅的頂點爲止。 #inclu

原创 POJ1873

題意:給你n個樹,每個樹都有自己的座標和價值、長度。現在要砍掉一些樹,來把剩下來的樹給圍起來。 優先砍掉價值便宜的樹,如果有幾種砍掉樹方案切價值一樣則選擇砍掉數目最少的方案。然後價值和數量一樣隨便輸出一種就行了。 思路:由於n比較小,就可

原创 有向圖雙連通分量(tranjan算法) 總結

借鑑博客 點擊打開鏈接 Tarjan算法是基於對圖深度優先搜索的算法,每個強連通分量爲搜索樹中的一棵子樹。搜索時,把當前搜索樹中未處理的節點加入一個堆棧,回溯時可以判斷棧頂到棧中的節點是否爲一個強連通分量。 在有向圖G中,如果兩個頂點間

原创 POJ 2187(求凸包內兩點之間最長距離)

推薦博客 :借鑑 /* 分別列舉每個凸包的每條邊,再列舉另一個凸包的點,求得一對對踵點,與當前記錄的值相取捨。 遍歷到下一條邊,從上次便利到的點開始尋找下一對踵點,再取捨......。直至取捨出最長、最短距離。 */ #include<s

原创 hiho一下1015

之前說了KMP中next的應用,今天做了這道題,又栽了。 這道題跟我之前寫的有一個小區別 比如子串aa,模式串aaaa。 之前寫的答案是2,現在的答案是3。 就是模式串中的字母可以重複使用,但不可以一模一樣。 開始的時候我改了i的座標位置

原创 POJ 1392(凸包的周長)

求凸包的長度,先求出凸包的外圍的點(求法上篇說過)。 然後求每每兩個點的之間的距離就可以了。 如果求凸包的面積就可以使用。 公式是: s1=x1*y2-y1*x2; S=s1+s2+...s(n-1)+s(n)(共有n個點) s/=2;

原创 歐拉路 小結(POJ 2337 爲例子)

最近把拓撲排序和歐拉路看了一遍,前面已經說了拓撲排序,今天就來說說一下,歐拉路。 從POJ 2337 這道題開始說吧。 這道的題目的意思是給你一些單詞,問你可不可以首尾連接起來。 思路:判斷是不是連通圖+歐拉圖判斷+輸出歐拉路路徑(字典序

原创 UVA 11889-Benefit

Recently Yaghoub is playing a new trick to sell some more. When somebody gives him A Tomans, he who never has appropri

原创 hiho一下 第五十三週(無向圖的雙連通分量)

這道題要求將無向圖按照點-雙連通來分塊。 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int INF=1<<29;

原创 hiho一下 第五十二週(割邊 割點)

最近做到了割邊割點的東西。就把這幾天學到的寫下來。 在一個無向圖中。 割點:就是刪除了這個點,圖會不在連通或者連通分量增加。 割邊:刪除一條邊,圖會不在連通或者連通分量增加。 做割點時候,會用到兩個數組。low[],dfn[]、 low

原创 HDU 2202(凸包內最大三角形面積)

先將凸包點求出來之後。 利用旋轉卡殼的方法,然後找不同兩點爲邊,在找其對踵點。三點求面積 取最大值就可以了。 #include<stdio.h> #include<math.h> #include<algorithm> using na

原创 hiho一下 第五十四周 (縮點+dfs)

這道題錯了好幾次,沒有看到一定從1號開始走。 題目的意思就是問你從一號開始走,最多可以吃多少草。 直接用到有向圖的雙連通的trajan算法給圖縮點, 再重新新建一個縮完點之後的圖, 然後直接從1號開始dfs就可以了。 #include<s

原创 UVA 10892-LCM Cardinality

A pair of numbers has a unique LCM but a single number can be the LCM of more than one possiblepairs. For example 12 is

原创 UVA 10943(How do you add?)

Larry is very bad at math — he usually uses a calculator, which workedwell throughout college. Unforunately, he is now

原创 UVALive 2889

A palindrome is a word, number, or phrase that reads the same forwards as backwards. For example,the name “anna” is a p