hdu 1070 Milk 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1070
贪心水
题目大意:Ignatius喝牛奶,给出一些牛奶的参数,从中选出性价比最高的牛奶。
题目分析:给出的参数有品名、容量、价格。由于一天要喝200ml,不够的扔掉,所以总量不足200ml的可以忽略不计。以5天为期,过期扔掉,所以1000ml以上的统统是够喝5天。总体思想就是按照性价比排序,这里的“性”就是可喝的天数,“价”就是价格,用结构体和快就得。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct milk
{
char brand[105];
int days;
double price,volume;
}m[100];
int cmp(milk a,milk b)
{
if(a.days*b.price==a.price*b.days)return a.volume>b.volume?1:0;
return a.days*b.price>a.price*b.days?1:0;
}
int main()
{
int t,n;
scanf("%d",&t);
for(int i=0;i<t;i++)
{
scanf("%d",&n);
for(int j=0;j<n;j++)
{
scanf("%s%lf%lf",m[j].brand,&m[j].price,&m[j].volume);
if(m[j].volume<200){j--;n--;continue;}
m[j].days=(m[j].volume/200)>5?5:m[j].volume/200;
//printf("%s\n",(m[j].volume/200)>5?"yes":"no");
//printf("::::%s\t%d\t%d::::\n",m[j].brand,m[j].price,m[j].days);
}
sort(m,m+n,cmp);
if(m[0].volume<200)
printf("\n");
else printf("%s\n",m[0].brand);
}
return 0;
}