思路:
dag模型!
先建圖,如果第i 個矩形 能套在 第j 個矩形裡面的話,那麼 就可以建立乙個有向邊,i->j,最後我們可以把這個問題轉換為 求這個圖中的最長路的長度!
dfs記憶化搜尋,和前幾篇那個樹形dp 有很大的相似之處,他們的思想是一樣的, 就是先遞迴,在回溯的過程中狀態轉移!
那乙個題目 在遞迴過程中要防止產生環,這個題目顯然不用,因為不可能存在乙個環,(不可能間接的套了自己!)
這樣轉移只需要轉移走了幾步即可!
這樣最後我們會得到 每乙個起點的最長路長度,列舉更新一下即可!
#include #include #include using namespace std;
const int maxn = 1000 + 10;
bool g[maxn][maxn];
int dp[maxn];
struct node
} p[maxn];
int n;
int dfs(int k)
}if (!ok)return 1;
return ans;
}int main()
for (int i = 0; i < n; ++i)}}
int ans = -1;
for (int i = 0; i < n; ++i)
printf("%d\n",ans);
}return 0;
}
時間限制:
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
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 ...
NYOJ16 矩形巢狀
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a輸入 第一行是乙個正正數n 0輸出 每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行 樣例輸入 1 1...