您的位置:首页 > 其它

HDU 1070 Milk(水~)

2015-08-29 10:59 369 查看
Description

土豪要买牛奶,对牛奶的要求是生产日期5天内饮用,每天喝200ml,少于200ml或者过期的扔掉,商场牛奶均是当天生产,选取满足要求的单价最小的牛奶,当单价一样时选择容量多的

Input

第一行为用例组数T,每组用例第一行输入牛奶种数n,之后n行每行为一种牛奶的描述,包括牛奶的名称,价格和价钱

Output

对于每组用例,输出土豪要买哪种牛奶

Sample Input

2

2

Yili 10 500

Mengniu 20 1000

4

Yili 10 500

Mengniu 20 1000

Guangming 1 199

Yanpai 40 10000

Sample Output

Mengniu

Mengniu

Solution

对于低于200ml的牛奶,将其单位价钱定成INF,对于超过1000ml的牛奶,将其单位价钱定成其价钱/5,对于低于1000ml的牛奶,将其单位价钱定成其价钱/(容量/200)),然后对每种牛奶先按价钱降序排序,价钱相同则按容积升序排序之后输出第一项即可

Code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define INF 111111111
struct node
{
char s[111];
double pr;
int v;
}m[111];
int cmp(node a,node b)
{
if(a.pr!=b.pr)//价钱不同则将价钱降序排
return a.pr<b.pr;
return a.v>b.v;//价钱相同则按容量降序排
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int temp,pri;
scanf("%s%d%d",m[i].s,&pri,&temp);
m[i].v=temp;
if(temp<200)//容量小于200价钱定成INF
m[i].pr=INF;
else if(temp>1000)//容量超过1000也只能喝5天
m[i].pr=pri*1.0/5;
else//容量低于1000则可以喝temp/200天
m[i].pr=pri*1.0/(temp/200);
}
sort(m,m+n,cmp);//对牛奶排序
puts(m[0].s);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: