原创 HDOJ2828-DLX, 重複覆蓋小變形

代碼是昨天寫的,今天又試着做重複覆蓋的DLX,發現根本寫不下,出現了重重錯誤,我還以爲我昨天誤打誤撞的代碼很優咧,太自以爲是了!這道HDOJ2828也是好題,它比我今天試寫的HDOJ3957簡單得多,最大的不同不是一個只是求一個YES/N

原创 HDOJ3594-仙人掌圖的判斷

/* 題意:給出一個有向圖,判斷該圖是否爲仙人掌圖. 這裏有一個不錯的關於仙人掌圖性質分析文章: pdf:http://files.cnblogs.com/ambition/cactus_solution.pdf 代碼也是按照文章

原创 POJ2763-LCA在線算法+樹狀數組

#include <cstdio> #include <cstring> #include <iostream> #include <vector> #include <cmath> using namespace std; const

原创 HDOJ2448-最短路,KM匹配

#include <cstdio> #include <cstring> #include <queue> #include <iostream> using namespace std; const int NN=120; const

原创 POJ2175-最小費用流消圈算法

#include <cstdio> #include <queue> #include <stack> #include <cstring> #include <iostream> using namespace std; const

原创 POJ2912-並查集

這題是POJ1182食物鏈的升級版,先做那題,這題應該也沒問題了。 #include <cstdio> #include <cstring> #include <iostream> using namespace std; const

原创 HDOJ2888-裸二維RMQ

#include <cstdio> #include <cmath> #include <cstring> #include <iostream> using namespace std; const int NN=301; int

原创 ZOJ3332-競賽圖中的哈密頓路

競賽圖:圖中的任意兩點間有且僅有一條有向弧連接 求競賽圖中的哈密頓路的算法: 首先,由數學歸納法可證競賽圖在n>=2時必存在哈密頓路; (1)n=2時顯然; (2)假設n=k時,結論成立,哈密頓路爲V1,V2,...,Vi,...,Vk;

原创 POJ1182-並查集

這題有一個關鍵點: x的食物的食物以x爲食,即生物間的關係是以3爲循環的,就像運算 (0+1)%3=1,(1+1)%3=2,(2+1)%3=0,(0+1)%3=1... ... 不管d=1還是d=2,都表示x與y有關係,因此可以併到一個並

原创 HDOJ2419-逆向處理操作,並查集,set

/*好題! 本題的靚處: 1.逆向處理所給操作,將集合的拆分化爲整合 2.STL set的lower_bound()函數 想法非原創,來自:http://blog.csdn.net/woshi250hua/article/details/

原创 POJ3740-精確覆蓋,Dancing_links

位運算裸搜版(500ms): #include <cstdio> #include <cstring> #include <iostream> #define LL long long using namespace std; con

原创 HDOJ4362-決策單調的DP

易得此題DP方程: dp[i][j]=min{dp[i-1][k]+abs(x[i-1][k]-x[i][j])}+cost[i][j]; //1<=i<=n,1<=j,k<=m; 當x[i-1][k]<=x[i][j]時,dp[i][j

原创 幾道黑書上的簡單DP題

這幾道經典的題本不應再由本菜囉嗦,無奈手癢總想貼點代碼~ POJ1141 括號的匹配 dp[i][j]表示從i到j使括號匹配完整的最少需要添加的括號,有 dp[i][i]=1; dp[i][j]=min(dp[i][k],[k+1][j]

原创 POJ1084-重複覆蓋,DLX

這題可理解爲用最少用多少火柴棒覆蓋全部的正方形,以正方形爲列,火柴棒爲行,重複覆蓋模型明顯。 建圖的時候要找出所有正方形所包含的火柴棒,我是這樣找的: 先確定最左上邊的正方形(邊長爲1~n)所包含的邊,因爲對於等大的兩個正方形,其相同位置

原创 Topcoder SRM552 Div1 500

int FoxAndFlowerShopDivOne::theMaxFlowers(vector <string> flowers, int maxDiff) { const int NN=1000; int n=flowers