Wooden Sticks
大致题意:
工厂加工一批木棍,加工所用的设备调整一次需要一分钟,只要后面的木棍的长度和重量大于等于前面的木棍,设备就不用调整。设备第一次启动的时候也需要一分钟。木棍的顺序可以调整,依次输入木棍的数量,长度和重量,求加工完这些木棍所需的最短时间。
思路:
此题很简单,就是多关键字排序,sort的用法记住即可~~~
#include<stdio.h>
#include<stdlib.h>
struct as
{
int l;
int w;
int f;
}b[5001];
int comparator(const void *elem1,const void *elem2)
{
as *a=(as*)elem1;as *b=(as*)elem2;
if(a->l==b->l)
return a->w-b->w;
return a->l-b->l;
}
void main()
{
int T,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d %d",&b[i].l,&b[i].w);
b[i].f=1;
}
qsort(b,n,sizeof(as),comparator);
int count=0;
for(i=0;i<n;i++)
{
if(b[i].f==1){
b[i].f=0;count++;
int temp=b[i].w;
for(int j=i+1;j<n;j++)
{
if(b[j].w>=temp&&b[j].f==1)
{
b[j].f=0;
temp=b[j].w;
}
}
}
}
printf("%d\n",count);
//for(int j=0;j<n;j++)
// printf("%d %d\n",b[j].l,b[j].w);
}
}