nyoj-16
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=16
有好几天都没有做题目了,本来自己就太弱,还不勤加练习,沉沦了一段时间,想想还是做题好
,那样的话,充实
这道题目用的是动态,感觉之前好像做过
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node{
int a,b;
}s[1200];
int cmp(node x,node y){
if(x.a!=y.a)
return x.a<y.a;
return x.b<y.b;
}
int dp[1200];
int main(){
int n,m;
int i,j,k,t,temp;
scanf("%d",&m);
while(m--){
memset(s,0,sizeof(s));
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d %d",&s[i].a,&s[i].b);
if(s[i].a>s[i].b){
temp=s[i].a;
s[i].a=s[i].b;
s[i].b=temp;
}
dp[i]=1;
}
sort(s,s+n,cmp);
int ans=-1;
for(i=1;i<n;i++){
for(j=i-1;j>=0;j--){
if(s[i].a>s[j].a&&s[i].b>s[j].b&&dp[i]<dp[j]+1)
{
dp[i]=dp[j]+1;
}
}
}
for(i=0;i<n;i++)
if(dp[i]>ans)
ans=dp[i];
printf("%d\n",ans);
}
return 0;
}

浙公网安备 33010602011771号