題意:給出乙個長為a,寬為b的布,再給出n個圍巾的規格(長x,寬y,價值c),問怎樣裁剪能夠得到最大的價值。
----第一次做的時候不會---然後放到今天做--發現還是不會---於是又--看題解了----@_@===
因為相同規格的圍巾可以重複剪多次,且圍巾的長和寬相當於兩個約束,所以可以轉換為二維費用的完全揹包問題。
然後就是圍巾的裁剪
第一種 橫著減
裁切線分為兩種
對於左上的第乙個圖,當減去長為x,寬有長為y的乙個矩形之後,剩餘的面積之和分別由長為i-x,寬為y;長為i,寬為j-y的兩個矩形組成。
對於左上的第二個圖,當減去長為x,寬有長為y的乙個矩形之後,剩餘的面積之和分別由長為i-x,寬為j;長為x,寬為j-y的兩個矩形組成。
第二種 豎著減 和第一種的方法類似--
然後就可以寫出狀態轉移方程----
#include#includeview code#include
#include
#define maxn 1005
using
namespace
std;
struct
node
a[maxn];
intdp[maxn][maxn];
intmain()}}
printf(
"%d\n
",dp[c][d]);}}
HDU 3127 WHUgirls(二維揹包)
有一塊x y的布,可以裁剪成n種不同的小碎步布,剪成xi yi的碎布可以獲得wi元,問將這塊布剪成小碎布最多能獲得多少錢?只能橫著剪或者豎著剪,不能從中間摳出一塊 二維dp,dp j k 表示j k的布剪成小碎布最多能得到多少錢,j k可以由三個小長方形組成 這裡有切割方式 1 xi yi j k ...
HDU 3127 完全揹包
題目大意 乙個大矩形,要你分割成小矩形 只能水平和豎直切割 每個小矩形都有乙個價值,問如何分割能得到最大總價值。解題思路 完全揹包思想,列舉所有可能情況。對於列舉每個小矩形都可以橫放豎放兩種情況。對於每種情況都有兩種切割方式 橫向切割或者豎向切割。1 include 2 include 3 incl...
HDU 2159 二維完全揹包
最近xhd正在玩一款叫做fate的遊戲,為了得到極品裝備,xhd在不停的殺怪做任務。久而久之xhd開始對殺怪產生的厭惡感,但又不得不通過殺怪來公升完這最後一級。現在的問題是,xhd昇掉最後一級還需n的經驗值,xhd還留有m的忍耐度,每殺乙個怪xhd會得到相應的經驗,並減掉相應的忍耐度。當忍耐度降到0...