眾所周知,北理工有很多美女,每個女生都喜歡漂亮的衣服。有一天,她們獲得了乙個巨大的矩形布料,她們想把這塊布料裁剪成一些小的矩形布料,用來製作圍巾。但是,不同的人喜歡不同的款式,因此他們開始投票為每一種款式進行定價,並把這些款式和**記錄在本子上。
她們有乙個機器可以將一塊布料水平或垂直的裁剪成兩塊更小的矩形布料,且一切到底。現在她們請你幫忙,利用這個機器將原始的那塊巨大矩形布料裁剪成本子上記錄的款式。美女們想從中獲得最大的利潤,所以你需要找到乙個最佳的裁剪策略。對於同乙個款式的圍巾,你可以製作任意多個,或者乙個都不做。當然,美女們也不強制要求你用完所有的布料。
輸入
第一行輸入整數 t,表示測試用例的個數
對於每個測試用例,由三個整數組成 n,x,y。其中,n 表示有 n 種你可以裁剪成的矩形布料,x,y 表示原始布料的尺寸。
接下來的 n 行,每行由三個整數組成,xi,yi,ci。xi,yi ,ci 分別表示第 i 種可以裁剪成的矩形布料尺寸及**。
輸入資料範圍
0 < t <= 20
0 <= n <= 10; 0 < x, y <= 1000
0 < xi <= x; 0 < yi <= y; 0 <= ci <= 1000
輸出
輸出一行結果,表示可獲得的最大利潤。
測試輸入
期待的輸出
時間限制
記憶體限制
額外程序
測試用例 1
以文字方式顯示
1↵2 4 4↵
2 2 2↵
3 3 9↵
以文字方式顯示9↵
1秒64m0
//這道題布塊的總大小即為容量,而且每種剪法的小布塊都有**,很明顯的揹包題
//而且由於每種減法可以多次使用,這就構成了乙個完全揹包,由於布條有長寬,所以使用二維陣列
//小布條的長寬並不是固定的,可以旋轉,所以剪法有兩種,得出兩個狀態方程
//方程1:dp[i][j] = fmax(dp[i][j], fmax((dp[i - size[k].i][j] + dp[size[k].i][j - size[k].j])
//,(dp[i][j - size[k].j] + dp[i - size[k].i][size[k].j])) + size[k].val)
//方程2:dp[i][j] = fmax(dp[i][j], fmax((dp[i - size[k].j][j] + dp[size[k].j][j - size[k].i])
//,(dp[i][j - size[k].i] + dp[i - size[k].j][size[k].i])) + size[k].val)
//由於大布塊剪去小布塊後剩下的布不一定是矩形,這種情況下剩下的布條可以分成兩個矩形
//所以總價值就是這三個矩形之和,而剩下的矩形又可以看做新的大矩形
#include#includeint dp[1005][1005] = ;
int fmax(int a, int b)
struct node
size[15];
int main()
printf("%d\n", dp[cloth_i][cloth_j]); }
return 0;
}
北理工的惡龍
背景 最近,北理工出現了乙隻惡龍,它長著很多 頭,而且還會吐火,它將會把北理工燒成廢墟,於是,校長下令召集全校所有勇士殺死這只惡龍。要殺死這隻龍,必須把它所有的頭都砍掉,每個勇士只能砍乙個龍頭,龍的每個頭大小都不一樣,乙個勇士只有在身高不小於龍頭的直徑的情況下才能砍下它。而且勇士們要求,砍下乙個龍頭...
北理工的惡龍
解答小張最近沉迷上一款手機遊戲北理工的惡龍。在這個遊戲中你通過提公升攻擊力擊敗惡龍,打敗所有惡龍後你可以獲得遊戲的勝利。在這款遊戲中,每一條惡龍有乙個難度值 x 和乙個經驗值 y 遊戲中的英雄具有攻擊力 a 遊戲一開始英雄的攻擊力 a 0 打到一條惡龍你的攻擊力需要大於難度值 x 在你擊敗惡龍以後,...
考研經驗之北理工
可算出名單了,忙活一年也有個結果。不是什麼驚天動地的大事也是給自己乙個交代吧。總結一下。我考的是軟院085212專碩。先說初試 政治 因為我是往屆生,邊工作邊複習,時間比較緊,政治我從開始就打算混過45的線即可,所以從十一月才開始看政治,風中勁草的書過一遍題過一遍,蔣中挺的大題大概背了一下,最後考了...