時間限制:3000 ms | 記憶體限制:65535 kb
難度:4
描述有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x(a,b)可以巢狀在矩形y(c,d)中當且僅當ab套在(6,2)內,但不能巢狀在(3,4)中。你的任務是選出盡可
能多的矩形排成一行,使得除最後乙個外,每乙個矩形都可以巢狀在下乙個矩形內。
輸入 第一行是乙個正正數n(0每組測試資料的第一行是乙個正正數n,表示該組測試資料中含有矩形的個數(n<=1000)
隨後的n行,每行有兩個數a,b(0每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行
樣例輸入
1101 2
2 45 8
6 10
7 93 1
5 812 10
9 72 2
樣例輸入
310 100
100 5
5 50
樣例輸出
5解析:
咋看不知道該怎麼做,雙向判斷的,與單調遞增子串行好像不一樣。但仔細想想,總的來說,還是要遞增的
序列,只不過是長和寬都要遞增,那就很好說了,先按照寬進行 sort 排序,再次,就是對長進行單調遞增篩選
了。即,我這次篩選的方法是同步乙個陣列,用來儲存當前的最多的個數,不斷更新陣列中的值,在用 max 來
不斷進行比較更新,最後輸出 max 即可。
具體**如下:
#include#includeusing namespace std;typedef struct
t;t q[1002];
int cmp(t a,t b)
q[i].x=a;q[i].y=b;
}sort(q,q+n,cmp);
for(max=0,i=0;iq[j].y&&q[i].x>q[j].x)
s[i]=s[i]>(s[j]+1)?s[i]:(s[j]+1);
if(max
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...
NYOJ 16 矩形巢狀
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a 輸入 第一行是乙個正正數n 0輸出 每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行 樣例輸入 1 ...