nyoj 16 矩形巢狀(基礎dp)

2021-07-28 13:34:58 字數 986 閱讀 5366

描述

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