BZOJ4886: [Lydsy1705月賽]疊塔遊戲(4886: [Lydsy1705月賽]疊塔遊戲)
阿新 • • 發佈:2018-11-19
4886: [Lydsy1705月賽]疊塔遊戲
Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 198 Solved: 76
[Submit][Status][Discuss]
Description
小Q正在玩一個疊塔的遊戲,遊戲的目標是疊出儘可能高的塔。在遊戲中,一共有n張矩形卡片,其中第i張卡片的 長度為a_i,寬度為b_i。小Q需要把所有卡片按一定順序疊成一座塔,要求對於任意一個矩形,它的長度要嚴格大 於它上邊的任意一個矩形的長度。塔的高度為所有矩形的寬度之和。在遊戲中,小Q可以將卡片翻轉90度來使用, 而且必須用上全部n張卡片。請寫一個程式,幫助計算小Q能疊出最高的塔的高度。Input
Output
輸出一行一個整數,即最高的塔的高度,輸入資料保證一定存在解。Sample Input
35 16
10 5
5 10
Sample Output
20HINT
Source
思路:要求長度遞增,求最大寬度之和。 由於排序是自己定的,所以只要求長度不相同,求最大寬度之和。 這樣的話,我們就嘗試用最大費用流來建圖,
S向每個矩形連(1,0)(表示容量為1,費用為0)的邊; 每個矩形向x連(1,y)的邊,向y連(1,x)的邊; 然後每個數向T連(1,0)的邊。然後就是跑最大費用流。 由於資料太大,顯然會超時。 這樣的題一般可以貪心優化,可以對比bzoj4883,是一個套路。