您的位置:首页 > 其它

杭电1070--喝牛奶

2015-10-24 14:04 288 查看
牛奶

问题描述

伊格内修斯每天喝牛奶,现在他在超市里,他想选择一瓶牛奶。在超市有许多种类的牛奶,所以伊格内修斯想知道哪种牛奶是最便宜的。

这里有一些规则:

1。伊格内修斯永远不会喝牛奶生产6天前或更早。这意味着如果牛奶生产2005-1-1,伊格内修斯永远不会喝这瓶后2005-1-6(包容)。

2。伊格内修斯每天喝200毫升牛奶。

3所示。如果牛奶瓶子里剩下不到200毫升,伊格内修斯会扔掉它。

4所示。超市里所有的牛奶是今天生产。

注意,伊格内修斯只是想买一瓶牛奶,所以如果一个瓶子的体积数小于200毫升,你应该忽略它。

鉴于一些信息的牛奶,你的任务就是告诉伊格内修斯这牛奶是最便宜的。

输入

输入包含多个测试用例。输入的第一行是一个整数T测试用例的数量。T测试用例。

每个测试用例开始于一个整数N(1 < = N < = 100)的数量种类的牛奶。N行,每一行包含一个字符串S(长度将最多100个字符)标明品牌的牛奶,然后两个整数的品牌:P(元),这是一瓶的价格,V(mL),这是一个瓶子的体积。

输出

为每个测试用例,你应该输出品牌的牛奶是最便宜的。如果有超过一个便宜的品牌,你应该输出的最大体积。

样例输入

2

2

Yili 10 500

Mengniu 20 1000

4

Yili 10 500

Mengniu 20 1000

Guangming 1 199

Yanpai 40 10000

样例输出

Mengniu

Mengniu

题意:

1。伊格内修斯永远不会喝牛奶生产6天前或更早。这意味着如果牛奶生产2005-1-1,伊格内修斯永远不会喝这瓶后2005-1-6(包容)。

2。伊格内修斯每天喝200毫升牛奶。

3所示。如果牛奶瓶子里剩下不到200毫升,伊格内修斯会扔掉它。

4所示。超市里所有的牛奶是今天生产。

注意,伊格内修斯只是想买一瓶牛奶,所以如果一个瓶子的体积数小于200毫升,你应该忽略它。(不处理)

思路:

根据每天的平均消费最少的进行选择(价钱/),>=6天的认为只要5天

代码:

# include <iostream>
# include <cstdio>

using namespace std;

int main(){

char st[103][103];
int a[103],b[103],c[103];
float v[103];
int i,j,k,n,m;

while(scanf("%d",&n)!=EOF){

for(i=0;i<n;i++){
scanf("%d",&m);
for(j=0;j<m;j++)
scanf("%s%d%d",st[j],&a[j],&b[j]);

for(j=0;j<m;j++)//计算能喝几天
if(b[j]<200){
c[j] = 0;
}else{
c[j] = b[j]/200;
if(c[j]>=6){
c[j] = 5;
}
}

for(j=0;j<m;j++){
if(c[j]==0){
v[j]=0;
continue;
}else
v[j] = 1.0*a[j]/c[j];
}

int at=0,bt=0,ct=0,cnt=0;
float max = 9999999;
for(j=0;j<m;j++){
if(v[j]<=max&&b[j]>=200){
if(v[j]==max){
if(b[j]>b[cnt])
cnt = j;
}else{
max = v[j];
cnt = j;
}

}
}

/*
按天数计算的
for(j=0;j<m;j++){
if(c[j]>max){
max = c[j];
cnt = j;
}else if(c[j]==max){
if(v[j]<v[cnt]){
max = c[j];
cnt = j;
}else if(v[j]==v[cnt]){
if(b[j]>b[cnt]){
max = c[j];
cnt = j;
}
}

}
}
*/

printf("%s\n",st[cnt]);

}

}

return 0;
}


代码2:

# include <iostream>
# include <cstdio>

using namespace std;

struct Milk{

char name[100];
int price;
int v;//体积
int day; //可以喝几天
int avg; //平均价钱

};

int main(){

int T,n,m,i,j,k;
Milk milks[103];

while(scanf("%d",&T)!=EOF){
while(T--){

scanf("%d",&n);
float max = 9999999;
int cnt = 0;
for(i=0;i<n;i++){
scanf("%s%d%d",milks[i].name,&milks[i].price,&milks[i].v);

if(milks[i].v<200){
continue;
}else{

milks[i].day = milks[i].v/200;
if(milks[i].day>=6){
milks[i].day = 5;
}
milks[i].avg = milks[i].price/milks[i].day;

if(milks[i].avg<=max){
if(milks[i].avg<max){
max = milks[i].avg;
cnt = i;
}else if(milks[i].avg==max){
if(milks[i].v>milks[cnt].v){
cnt = i;
}
}

}

}
}

printf("%s\n",milks[cnt].name);

}

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: