//类似于最长单调子序列,把单调条件改为嵌套即可
#include <iostream>
#include <cstring>
using namespace std;
int dp(int cur);
struct data
{
int l;
int w;
};
int n;
int d[1010];
data a[1010];
int main()
{
int T;
cin >> T;
while(T--)
{
cin >> n;
for(int i = 1; i <= n; i++)
cin >> a[i].l >> a[i].w;
int max = 0;
memset(d, 0, sizeof(d));
for(int i = 1; i <= n; i++)
{
if(max < dp(i))
max = dp(i);
}
cout << max << endl;
}
}
int dp(int cur)
{
if(d[cur] > 0)
return d[cur];
d[cur] = 1;
for(int i = 1; i <= n; i++)
{
if( (a[cur].l > a[i].l && a[cur].w > a[i].w) || (a[cur].l > a[i].w && a[cur].w > a[i].l) )
if(d[cur] < dp(i) + 1)
d[cur] = dp(i) + 1;
}
return d[cur];
}
南阳理工OJ_题目16 矩形嵌套
最新推荐文章于 2019-03-20 23:20:35 发布