wooden sticks

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;

struct Node{
int l,w;
};
Node a[10005];
int l[10005],len;
bool cmp(const Node x,const Node y){
return x.l<y.l;
}
int search(int left ,int right,int x){
int mid,i;
while(left<right){
mid=left+(right-left)/2;
if(l[mid]>x) left=mid+1;
else right=mid;
}
return right;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i].l);
scanf("%d",&a[i].w);
}
sort(a,a+n,cmp);
l[0]=a[0].w;
len=0;
for(i=1;i<n;i++){
if(a[i].w<l[len]) l[++len]=a[i].w;
else {
int pos=search(0,len,a[i].w);
l[search(0,len,a[i].w)]=a[i].w;
}
}
printf("%d\n",len+1);
}
}

 

posted on 2017-04-10 22:59  jiang2017  阅读(90)  评论(0)    收藏  举报

导航