描述
有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x(a,b)可以巢狀在矩形y(c,d)中當且僅當a< c,b< d或者b< c,a< d(相當於旋轉x90度)。例如(1,5)可以巢狀在(6,2)內,但不能巢狀在(3,4)中。你的任務是選出盡可能多的矩形排成一行,使得除最後乙個外,每乙個矩形都可以巢狀在下乙個矩形內。
輸入 第一行是乙個正正數n(0< n<10),表示測試資料組數,
每組測試資料的第一行是乙個正正數n,表示該組測試資料中含有矩形的個數(n<=1000)
隨後的n行,每行有兩個數a,b(0< a,b<100),表示矩形的長和寬
輸出 每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行
樣例輸入
1
101 2
2 45 8
6 10
7 93 1
5 812 10
9 72 2
樣例輸出
5
解題思路:
設d[i]表示前i個能被第i個巢狀在內的最多矩形個數,則有
d[i]=max(d[i],d[j]+1)
#include
#include
using
namespace
std;
struct nodes[10005];
int d[10005];
int cmp(node x,node y)
sort(s,s+n,cmp);
for(int i=0;ifor(int j=0;jif(s[i].a>s[j].a&&s[i].b>s[j].b) //避免交錯比較
d[i]=max(d[i],d[j]+1);
int max=d[0];
for(int i=1;iif(maxcout
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 ...
NYOJ16 矩形巢狀
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a輸入 第一行是乙個正正數n 0輸出 每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行 樣例輸入 1 1...