您的位置:首页 > 其它

NYOJ 16 矩形嵌套

2014-05-27 17:26 267 查看
链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=16

 

最长单调子序列......注意可以不是连续的

 

#include <iostream>
//#include<stdio.h>
#include<algorithm>
#define max( a, b ) ((a>b)?(a):(b))
using namespace std;
typedef struct
{

int l;
int w;
}zf;
int cmp(zf a,zf b)
{
return a.l<b.l;
}
zf data[1005];
int dp[1005];
int main()
{

int tem;
int t;
int n;
int i,j;
int ans;
//freopen("1.txt","r",stdin);
cin>>t;
while(t--)
{

ans=0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>data[i].l>>data[i].w;
if(data[i].l<data[i].w)
{
tem=data[i].l;
data[i].l=data[i].w;
data[i].w=tem;
}
}
for(i=0;i<n;i++)
dp[i]=1;
sort(data,data+n,cmp);
for(i=n-1; i>=0; i--)
for(j=i; j<n; j++)
if(data[i].l<data[j].l&&data[i].w<data[j].w)
dp[i]=max(dp[j]+1,dp[i]);

for(i=0;i<n;i++)
if(ans<dp[i])
ans=dp[i];
cout<<ans<<endl;

}
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM dp