原创 SPOJ AMR12A The Black Riders(二分+二分匹配)

有n個人,m個洞。每個洞能容納一個人,每個人到每個洞需要花費一些時間。每個人到達一個洞後可以花C的時間來挖洞,這樣該洞的容量就變成2了。求能使至少K個人進洞的最短時間。 還是將求極值問題轉化爲判定問題。二分枚舉時間,能否在time的時間內

原创 hdu 4445 Crazy Tank(枚舉角度)

這題第一反映肯定是三分角度,然後求最大值。。但是有友方坦克的存在,如果一個角度會導致某個導彈打到友方坦克,那麼返回結果直接是0。 所以只能萎縮地枚舉角度了。。。。e中保存地方坦克的區間,f中保存友方坦克的區間。 #include<alg

原创 SPOJ AMR12C Entmoot(二分+圓的面積交)

題意是有n個人,每個人有各自座標以及速度,求一個點X,使得所有點走到X點,耗時最大的那個人的耗時最小。輸出這個時間。 抽象成圓的面積交: 二分枚舉時間將求極值問題轉換爲判定問題。如何判斷是否存在一個點X,使得所有點都能在time時間內到達

原创 hdu 3681 Prison Break(dp || dfs)

15Y。。。不過離當時的 hdu4766 21Y還有一段距離。。。 剛開始拿到這題就直接bfs搞 TLE了一發。。。然後發現圖中那些空地是可有可無的,於是可以把圖中所有F G Y抽象出來建圖,然後bfs。這個思路基本正解了吧? 於是就wa

原创 hdu 4490 Mad Veterinarian(bfs)

有三種物品,每個物品可以變換成一個或多個其他物品。這種變換關係是可逆的。 然後求從初始狀態轉換到目標狀態所需的最少步數。直接bfs就能搞了,記錄狀態的話小hash一發話就行了。 #include<algorithm> #include<

原创 hdu 4115 Eliminate the Conflict (3-sat ??? no! it's a 2-sat pro.)

坑爹: 看到各種衝突,當然第一反映是2-sat,但是這有三種情況啊,貌似不能滿足布爾型約束吧。。。gg吧, 沒法做。。。 反思: 傳統2-sat是,i拆爲兩個節點,爲真對應i節點,爲假對應i+n節點。這個題有三種不同的bool變量可以將每

原创 三維計算幾何模板整理

/***********基礎*************/ struct Point3 { double x, y, z; Point3(double x=0, double y=0, double z=0):x(x),y(y),z

原创 SGU 536 Berland Chess(狀態壓縮 + bfs)

在一個n*m的棋盤上,你有一個white king,然後還有一些(<15)個黑子,每個黑子有一定的攻擊範圍並且他們不會移動。求吃掉所有黑子的最少步數。 黑子的個數很少,所以用狀態壓縮來表示棋盤上還剩餘哪些黑子。在bfs前先要初始化所有黑子

原创 hdu Disney's FastPass(狀態壓縮dp)

這種題我一直喜歡用bfs搞的,但是這個題不太好bfs,主要是我剛開始想的是通過邊進行狀態轉移,這樣很不好寫。。。於是就坑爹了,調了很久sample都沒出。。。 於是學習了一下別人的思想。。。通過“目的”來進行狀態轉移而不是邊。當你在某個點

原创 Codeforces 131D Subway(找圖上唯一環)

給定一個n個點n條邊存在唯一環的聯通圖,求每個點到環的距離。 找唯一環的話,用類似拓撲排序的方法,由於環上點的度>=2,所以bfs後未能遍歷的點必在環上,然後就用dfs跟新距離就行了。 #include<algorithm> #incl

原创 二維計算幾何模板整

/***********三分法求函數極值*************/ void solve() { double L, R, m, mm, mv, mmv; while (L + eps < R) {

原创 SGU 532 Building Foundation(枚舉)

給出n條與x軸或y軸平行的線段,然後求這些線段能組成多少個矩形。 上來就n^4先枚舉了一發,果斷TLE了。。。 然後反思:由於n條線段與x軸或y軸平行,所以組成的矩形一定是兩條於x軸平行,兩條與y軸平行的。這樣的話,我們先n^2枚舉所有兩

原创 hdu 3722 Card Game (km)

感覺題中這句“Jimmy wants to stick them into several circles, and each card belongs to one circle exactly.”就是嚇唬人的,事實上任意兩個字符串都能

原创 Codeforces 116C - Party(dfs)

n個人,每個人之多有一個上司。“上司”關係具有傳遞性。求最少將人分成多少組,每組中的每個人的上司或者間接上司都不在該組。拿到題就用樹的直徑wa了一炮。。。 正解是有向無環森林的最長路。從每個跟節點dfs,找最長的路就行了。 #inclu

原创 hdu 4273 Rescue(三維凸包重心)

裸的三維凸包重心到表面的最近距離。 #include<algorithm> #include<iostream> #include<cstring> #include<fstream> #include<sstream> #includ