这是贪心算法的应用,主要是将长度排序后,比较重量。
心急的C小加
时间限制:1000 ms | 内存限制:65535 KB
难度:4
描述
C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?
输入
第一行是一个整数T(1
#include<stdio.h>
#include<algorithm>
using namespace std;
struct Node
{
int l,w;
}s[5001];
int cmp(Node a,Node b)
{
if(a.l!=b.l)
{
return a.l<b.l;
}
else
{
return a.w<b.w;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&s[i].l,&s[i].w);
}
sort(s,s+n,cmp);
int k=0;
for(i=0;i<n;i++)
{
if(s[i].w!=0) //没有标记过的,这很重要
{
int t=s[i].w;
k++;
for(j=i+1;j<n;j++)
if(s[j].w>=t)
{
t=s[j].w;
s[j].w=0;//标记过的
}
}
}
printf("%d\n",k);
}
return 0;
}