時間限制:
3000 ms | 記憶體限制:
65535 kb
難度: 4 描述
有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x(a,b)可以巢狀在矩形y(c,d)中當且僅當a輸入
第一行是乙個正正數n(0輸出
每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行
樣例輸入
1101 2
2 45 8
6 10
7 93 1
5 812 10
9 72 2
樣例輸出
5
思路:如果乙個矩形a可以巢狀在另乙個矩形b中,則它們之間存在由a指向b的關係。這樣所有矩形之間的巢狀關係就可以轉化為乙個有向圖,而本題則轉化為求有向圖上的最長路徑(起點不固定)。
動態轉移方程:dp[i]=max+1,(i和j,k,l...之間存在關係) dp[i]表示從i出發的最長路徑。
即:從圖中某一點以起點的最長路徑等於以所有跟它有關係的點為起點的最長路徑中的最大值+1。例如:a可以巢狀在b、c和d中,那麼從a出發的最長路徑=max(dp[b],dp[c],dp[d])+1;
#include#include#define max(a,b) a>b?a:b
const int n=1000+10;
struct rect
a[n];
int dp[n],g[n][n];
int n;
int dfs(int i)
printf("%d\n",max);
}return 0;
}
nyoj 16 矩形巢狀
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當ab套在 6,2 內,但不能巢狀在 3,4 中。你的任務是選出盡可 能多的矩形排成一行,使得除最後乙個外,每乙個矩形都可以巢狀...
NYOJ 16 矩形巢狀
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a 輸入 第一行是乙個正正數n 0輸出 每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行 樣例輸入 1 ...
NYOJ 16 矩形巢狀
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a 輸入 第一行是乙個正正數n 0輸出 每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行 樣例輸入 1 ...