hdu1051
#include<iostream>
#include<algorithm>
using namespace std;
struct SIZE
{
int l;
int w;
}sticks[5005];
int flag[5005];
bool cmp(const SIZE &a,const SIZE &b)//这里是排序!
{//写排序函数的时候要特别的小心!
//if(a.w!=b.w)//这里写错了,这里表示如果重量不等,按照长度排,如果重量相等,则按照重量排!(没意义!)
if(a.l!=b.l)
return a.l>b.l;//长度不等时按照长度排,从大到小排
else
return a.w>b.w;//长度相等时,再按照重量从大到小排列
}
int main()
{
int n,min,cases;
int i,j,s;
cin>>cases;
for(j=0;j<cases;j++)
{
cin>>n;
for(i=0;i<n;i++)
{
cin>>sticks[i].l>>sticks[i].w;
flag[i]=0;
}
sort(sticks,sticks+n,cmp);
s=0;
for(i=0;i<n;i++)
{
if(flag[i]) continue;
min=sticks[i].w;
for(int j=i+1;j<n;j++)
{
if(min>=sticks[j].w && !flag[j])
{
min=sticks[j].w;
flag[j]=1;
}
}
s++;
}
cout<<s<<endl;
}
//system("pause");
return 0;
}
- #include<iostream>
- #include<algorithm>
- using namespace std;
- struct SIZE
- {
- int l;
- int w;
- }sticks[5005];
- int flag[5005];
- bool cmp(const SIZE &a,const SIZE &b)//这里是排序!
- {//写排序函数的时候要特别的小心!
- //if(a.w!=b.w)//这里写错了,这里表示如果重量不等,按照长度排,如果重量相等,则按照重量排!(没意义!)
- if(a.l!=b.l)
- return a.l>b.l;//长度不等时按照长度排,从大到小排
- else
- return a.w>b.w;//长度相等时,再按照重量从大到小排列
- }
- int main()
- {
- int n,min,cases;
- int i,j,s;
- cin>>cases;
- for(j=0;j<cases;j++)
- {
- cin>>n;
- for(i=0;i<n;i++)
- {
- cin>>sticks[i].l>>sticks[i].w;
- flag[i]=0;
- }
- sort(sticks,sticks+n,cmp);
- s=0;
- for(i=0;i<n;i++)
- {
- if(flag[i]) continue;
- min=sticks[i].w;
- for(int j=i+1;j<n;j++)
- {
- if(min>=sticks[j].w && !flag[j])
- {
- min=sticks[j].w;
- flag[j]=1;
- }
- }
- s++;
- }
- cout<<s<<endl;
- }
- //system("pause");
- return 0;
- }