原创 LightOJ-1012-Guilty Prince [DFS]

題目傳送門 題意:給定一個迷宮,求與’@’相連的面積一共有多大。 思路:紅黑磚問題,直接從’@’處DFS並記錄個數。 #include <bits/stdc++.h> using namespace std; char m

原创 LightOJ-1007-Mathematically Hard [歐拉函數]

題目傳送門 題意:求下從a到b的所有數的歐拉函數的平方和。歐拉函數:小於n的與n互質的數的個數。 思路:預處理篩選,求前綴和。 #include <bits/stdc++.h> using namespace std; u

原创 LightOJ-1002-Country Roads [最短路][Dijkstra]

題目傳送門 題意:給定無向圖,求一個城市t到其他城市的最低成本,成本的定義爲路徑中的最大消費。 思路:這個題跟POJ-2253-Frogger類似,可以用Dijkstra算法變形來寫。也可以用kruskal來寫。 #inclu

原创 LightOJ-1009-Back to Underworld [二分圖染色]

題目傳送門 題意:給定n種對立關係,求一方的人最多有多少個。 思路:二分圖染色問題。如果當前節點爲一種顏色,則與之相連節點全部都爲另一種顏色。統計兩個顏色個數,取最大值。 #include <bits/stdc++.h> u

原创 LightOJ-1006-Hex-a-bonacci

題目傳送門 題意:對遞歸函數進行優化。 思路:易知此遞歸函數爲一遞推式,即數組第K個數爲第K-6個數到第K-1個數之和,可以用循環寫。 #include <bits/stdc++.h> using namespace std

原创 LightOJ-1011-Marriage Ceremonies [狀態壓縮][DP]

題目傳送門 題意:給n對男女兩兩之間的好感度,求將他們所有兩兩結合起來得到的最大好感度。 思路:狀壓DP,dp[i][j]表示選前i個人的j種選法的最大好感度。 #include <bits/stdc++.h> using

原创 HDU-2389-Rain on your Parade [二分匹配][Hopcroft-Carp]

題目傳送門 題意:有n個人的座標和速度,有m個傘的座標,問有多少人能在t秒內到傘底下,一個傘底下只能有一個人。 思路:二分匹配,用匈牙利算法無限超時,又改用鄰接表還是超時,最後查資料才知道處理數據較大的二分匹配需要用Hopcr

原创 LightOJ-1004-Monkey Banana Problem [DP]

題目傳送門 題意:給定一個菱形的陣列,每次只能向左下或者右下移動,問從最上邊走到最下邊數字之和最大爲多大。 思路:DP,可以分解成兩個數塔。 #include <bits/stdc++.h> using namespace

原创 LightOJ-1010-Knights in Chessboard [規律]

題目傳送門 題意:象棋中馬是走日字形,問在m*n的棋盤中最多可以放多少個馬,使他們不能互相攻擊。 思路:規律題。 - 如果只有一行或者一列,則所有的棋盤均可以放馬。 - 如果有兩行或者兩列,則一個田字型可以放2*2個馬,然

原创 POJ-3020-Antenna Placement [二分匹配][最小路徑覆蓋]

題目傳送門 題意:一個地圖由o和*組成,一個信號塔可以覆蓋兩個連續的*。問至少需要多少個信號塔才能覆蓋所有的*。 思路:先將所有的’*’hash,然後建立二分圖,用匈牙利算法算出最大匹配數。最小路徑覆蓋數 = 頂點數 - 最大

原创 HDU-2819-Swap [二分匹配][輸出路徑]

題目傳送門 題意:給定一個只有0 1的矩形,問能否通過交換行列使對角線上的數全爲1,如果可以輸出交換的路徑。 思路:首先通過匈牙利算法算出最大匹配,如果最大匹配數不等於矩陣的行數,則必然不會成功。只交換行,或者只交換列都可以交

原创 LightOJ-1014-Ifter Party

題目傳送門 題意:給定兩個數p,l,求所有x,使p%x==l。 思路:注意l>x。 #include <bits/stdc++.h> using namespace std; int ans[10100]; int mai

原创 LightOJ-1013-Love Calculator [LCS][DP]

題目傳送門 題意:給定兩個字符串,求構造一個字符串包含這兩個字符串,求最短的構造字符串和不同構造字符串的數量。 思路:dp[x][y]數組表示從a[1]~a[x],b[1]~b[y]所能構造的最短字符串的長度,ans[x][y

原创 LightOJ-1008-Fibsieve`s Fantabulous Birthday [規律]

題目傳送門 題意:給定一個圖表,求第n個數的座標。 思路:規律題,1 * 1的方陣最外層爲1,2 * 2的方陣最外層爲[2,4], 3 * 3的方陣最外層爲[5,9],可知n*n的方陣最外層爲[(n-1)^2+1,n^2]。可

原创 LightOJ-1003-Drunk [拓撲排序]

題目傳送門 題意:給定一些酒和一些順序,如果想喝B酒必須先喝A酒。問可不可以喝完所有的酒。 思路:拓撲排序,用map存出現過的字符串。 #include <bits/stdc++.h> using namespace std;