NYOJ 16 矩形巢狀 記憶化搜尋

2021-07-23 04:57:57 字數 1098 閱讀 2440

思路:

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輸出

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

樣例輸入

1

101 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...