uva 10026 Shoemaker's Problem 题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=12&problem=967&mosmsg=Submission+received+with+ID+11605719
贪心
题目大意:一个鞋匠有n个工作要做,每个工作有两个参数,分别是做完它要花费的时间,和延期罚金。延期罚金要交到开始做这个工作为止,输出最优工作序列,并且,两个样例之间隔一行。
题目分析:重点在cmp的写法上。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{
int t,f,num;
}a[1010];
int cmp(node a,node b)
{
return (a.f*1.*b.t)>(b.f*1.*a.t)?1:0;
}
int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i].t,&a[i].f);
a[i].num=i;
}
sort(a,a+n,cmp);
for(i=0;i<n;i++)
{
if(i)printf(" ");
printf("%d",a[i].num+1);
}
printf("\n");
if(t)printf("\n");
}
return 0;
}
PS:~