hdu 3127 矩陣切割)

2021-06-22 05:38:40 字數 759 閱讀 4116

對於乙個小矩形,有兩種切割方式(上下):1、在xx上切x,在yy上切y;2、在xx上切y,在yy上切x

故有:1、在xx上切x,在yy上切y;

dp[i][j]=max(dp[i][j],max(dp[x][j-y]+dp[i-x][j],dp[i][j-y]+dp[i-x][y])+value);

2、在xx上切y,在yy上切x

dp[i][j]=max(dp[i][j],max(dp[y][j-x]+dp[i-y][j],dp[i][j-x]+dp[i-y][x])+value);

其中dp[i][j]表示(0,0)到(i,j)切出小矩陣的價值和;

1 #include2

const

int n=1010;3

using

namespace

std;45

struct

nodenode[n];

9int

dp[n][n];

1011

intmain()

20 memset(dp,0,sizeof

(dp));

21for(int i=1;i<=x;i++)

27if(node[k].x<=j&&node[k].y<=i)30}

31}32}

33 printf("

%d\n

",dp[x][y]);34}

35return0;

36 }

HDU 3127 完全揹包

題目大意 乙個大矩形,要你分割成小矩形 只能水平和豎直切割 每個小矩形都有乙個價值,問如何分割能得到最大總價值。解題思路 完全揹包思想,列舉所有可能情況。對於列舉每個小矩形都可以橫放豎放兩種情況。對於每種情況都有兩種切割方式 橫向切割或者豎向切割。1 include 2 include 3 incl...

HDU 3127 WHUgirls(二維揹包)

有一塊x y的布,可以裁剪成n種不同的小碎步布,剪成xi yi的碎布可以獲得wi元,問將這塊布剪成小碎布最多能獲得多少錢?只能橫著剪或者豎著剪,不能從中間摳出一塊 二維dp,dp j k 表示j k的布剪成小碎布最多能得到多少錢,j k可以由三個小長方形組成 這裡有切割方式 1 xi yi j k ...

HDU 3127 WHUgirls 二維完全揹包

題意 給出乙個長為a,寬為b的布,再給出n個圍巾的規格 長x,寬y,價值c 問怎樣裁剪能夠得到最大的價值。第一次做的時候不會 然後放到今天做 發現還是不會 於是又 看題解了 因為相同規格的圍巾可以重複剪多次,且圍巾的長和寬相當於兩個約束,所以可以轉換為二維費用的完全揹包問題。然後就是圍巾的裁剪 第一...