原创 多重揹包的兩種求解形式

1.將多重揹包轉化成01揹包求解。    即將物品的數量M按照二進制分解成 M = 1 + 2 + 4 + ... + 2 ^ k + a. 然後對這些物品進行01揹包。    如果沒有求具體方案的,我們可以在求解的過程中進行分解,而不保

原创 SGU 259 Printed PR 貪心 單機調度問題

題意:有N份傳單需要打印和送達。打印的時間是T,送達的時間是L。現在只有一臺機器進行打印,有無限的人去送傳單。問至少需要多長時間,才能將所有傳單打印並送達完成。 思路:簡單的單機調度問題。            一般在單機調度問題中,順序

原创 ZOJ Cookie Choice 多重揹包 單調隊列優化 分組揹包 泛化物品求和

題意:一個人想買甜點。有N種不同的甜點,每種甜點有價值Ei,價格Pi。這個人對每種甜點想買Ki塊。當Ki =0時,該甜點可以買無限塊。            同時,因爲有些甜點的味道相同,他將有些甜點分成了G組。每組內的甜點,最多買一種。

原创 CF 245H Queries for Number of Palindromes

題意:給出長度不超過50000的字符串,詢問區間[l,r]  內有多少迴文子串。 思路:因爲字符串長度比較長,首先我們要解決的就是判斷s l ...s r   是不是迴文字符串。 這個可以遞推得到。 設p[l][r]爲起始位

原创 SGU 134 Centriod 樹的重心

題意:給出一個樹,求出所有的節點,使刪除該點後,得到的最大的子樹的節點個數最小。 思路:上面就是樹的重心的定義了。 首先,我們將無根樹轉化成有根樹。 因爲是要刪除一個節點,我們可以枚舉刪除那個節點。 這樣對於一個節點u,我

原创 ZOJ 1134 Strategic Game 樹的最大獨立集

題意:給出一棵樹,現在要在某些節點上放置士兵,使這些士兵能夠監視每條邊。最少需要放多少個士兵。 思路:在圖論術語上,題目所求的最少士兵的個數叫做最小點覆蓋,即選擇最小數量的點,使每條邊都以這些點中的一個點爲端點。 然後有公式:

原创 POJ 1014 Dividing 多重揹包

題意:有6種不同價值的石頭,告訴你每種石頭的數量。現在兩個人要平分這些石頭,希望每個人得到的價值相同的。問是否可以達到要求的方案。 思路:標準的多重揹包,因爲找到是否存在解,把數量二進制分解就行了。 代碼如下: #include <cst

原创 POJ Euro Efficiency 完全揹包

題意:給出你6種貨幣的面值。讓你求出,對於1-100中每個價值,至少需要多少枚硬幣才能得到。對於價值i,需要的硬幣定義爲給出和收到的硬幣的數量和。 思路:因爲需要的硬幣包括給出和找零回來的錢,所以我們進行兩邊完全揹包。 注意:需要非常注意

原创 POJ 3342 Party at Hali-Bula 樹形DP 最大獨立集

題意:一個公司想舉辦聚會,但是爲了氣氛,如果邀請一個員工的話,是不會再邀請他的直接上司。這個公司的人員結構是樹形的,每個人至多有一名直接上司。給出這個公司的人員結構,求出能參加聚會的人數的最大值,同時判斷方案是否唯一。 思路:同

原创 ZOJ 3201 Tree of Tree 樹形DP

題意:給出一棵樹,每個節點有對應的權值。求出節點個數爲K,且權值和最大的子樹。 思路:首先要解決的問題就是連通性。因爲題目中,是讓我們求出權值和最大的子樹,如果在計算的過程中,無法保證是選取的點是相連的,那最終的答案也不是符合題

原创 HDU 4281 Judges' response 狀態壓縮 01揹包 MTSP

題意:比賽上,有N個選手提出了問題,解決每個選手的問題需要的時間是Ci。現在每個裁判至多能爲選手解答時間長爲M的問題。至少需要幾個裁判才能解決所有的選手的問題。            同時,給出每個選手的位置座標xi,yi.希望所有裁判從

原创 POJ 1384 Piggy-Bank 完全揹包

題意:給出儲錢罐初始的重量,放入錢後的重量。給出N種貨幣,貨幣的價值和重量。問儲錢罐中錢的最少的價值是多少。 思路:因爲錢的數量可以認爲是無限的,所以是個完全揹包。 注意:注意初始化。 代碼如下: #include <cstdio> #i

原创 UVA 1347 Tour 雙調旅行商

題意:平面上有N個點。一個人要從左上角的點向右走,到右下角的點,然後再回到左上角的點。現在想讓這個人每個點到達一次,且走的總路程的距離最小。求出最小的距離。 思路:雙調旅行商問題。 因爲起點和中途點已知,我們可以把這個

原创 POJ 2392 Space Elevator 多重揹包

題意:牛們想造一個儘可能高的塔。他們有N種方塊,每種方塊高h_i,有c_i個,但是這種方塊只能在高度小於a_i時使用。問這個塔最高可以搭起到多高的高度。 思路:沒有高度限制的話,其實把所有的方塊都用上,纔是最高的高度。但是有了高度a_i限

原创 CF 161D Distance in Tree 樹形DP

題意:給出一個無根樹,統計有多少節點對之前的距離恰好等於K。相鄰節點間的距離爲1. 思路:樹形DP。 我們可以將無根樹轉化成有根樹,這個很容易做到。 對於一個子樹,其根結點爲s,我們只需統計s的子樹之間距離爲