NYOJ 矩形巢狀(DP)

2021-06-22 20:50:05 字數 1186 閱讀 5200

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:4 描述

有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x(a,b)可以巢狀在矩形y(c,d)中當且僅當a

輸入

第一行是乙個正正數n(0輸出

每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行

樣例輸入

1

101 2

2 45 8

6 10

7 93 1

5 812 10

9 72 2

樣例輸出

5

/*用矩陣g[i][j]來儲存兩個矩形之間是否可以實現巢狀*/

/*用dp[i]來表示到達當前第i個矩形(每個矩形相當於圖上的乙個頂點)*/

/*狀態轉移方程為dp[i]=max,其中j是有向無環圖adg中的存在的邊*/

#include

#include

#include

using namespace std;

const int maxn=1005;

int g[maxn][maxn];

int dp[maxn];

typedef struct

node;

node data[maxn];

int ok(node a,node b)

int n;

int main()

memset(g,0,sizeof(g));

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

memset(dp,0,sizeof(dp));

for(i=1;i<=n;i++)

}printf("%d\n",max);

}return 0;

}int max(int a,int b)

int f(int i)

/*現在dp還沒真正學懂,所以只能用記憶化方法,

下面的一段非遞迴**是錯誤的,等著有能力的時候再寫非遞迴吧

for(i=1;i<=n;i++)}}

dp[i]=temp+1;

}for(i=1;i<=n;i++)

}printf("%d\n",max);

*/

nyoj 16 矩形巢狀(基礎dp)

描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a c,b d或者b c,a d 相當於旋轉x90度 例如 1,5 可以巢狀在 6,2 內,但不能巢狀在 3,4 中。你的任務是選出盡可能多的矩形排成一行,使得除最後乙個外,每乙個矩形都可以...

矩形巢狀 DP

原先沒看出來,後來發現和議題很像,都是胴體規劃,那題是給你一些點的座標,找到最多的點連成的顯示單調的 include includestruct asd ju 1010 int cmp const void a,const void b int qian int j,int i void sol i...

矩形巢狀(DP)

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a 輸入 第一行是乙個正正數n 0輸出 每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行 樣例輸入 1 ...