HDU 1070 Milk
/*
題目大意:Ignatius喝牛奶,給出一些牛奶的參數,從中選出性價比最高的牛奶。
喝牛奶的三個條件
1. 喝同一瓶牛奶不能超過5天
2.不喝200ml以下的
求最便宜的 ,若最便宜的不止一個,選最多的。
題目分析:
Yili 10 500 --品牌、價格、容量
Yili 10 500 相當於每天5元
Mengniu 20 1000 相當於每天4元
由於一天要喝200ml,不夠的扔掉,所以總量不足200ml的可以忽略不計。
以5天為期,過期扔掉,所以1000ml以上的統統是夠喝5天。
總體思想就是按照性價比排序,這裡的“性”就是可喝的天數,“價”就是價格,用結構體和快排就得。
*/
# include
struct Milk
{
char brand[100];
int days;
double price,volume,ratio;
}m[10];
void sort(Milk * m, int num)
{
Milk temp;
for(int i = 0; i < num-1; i++)
{
for(int j = 0; j < num-1; j++)
{
if(m[j].ratio > m[j+1].ratio)
{
temp = m[j+1];
m[j+1] = m[j];
m[j] = temp;
}else if((m[j].ratio == m[j+1].ratio) && (m[j].volume > m[j+1].volume))
{
temp = m[j+1];
m[j+1] = m[j];
m[j] = temp;
}
}
}
}
int main(void)
{
int T,N,num;
scanf("%d",&T);
while(T--)
{
scanf("%d",&N);
for(int i = 0; i < N; i++)
{
scanf("%s %lf %lf", m[i].brand, &m[i].price, &m[i].volume);//brand代表字符串的首地址,所以不需要&
if(m[i].volume < 200) {i--; N--; continue;}
m[i].days= (m[i].volume/200) > 5 ? 5 : m[i].volume/200;
m[i].ratio = m[i].price/m[i].days;
}
sort(m, N);
if(m[0].volume < 200)
printf("\n");
else printf("%s\n",m[0].brand);
}
return 0;
}