设为首页 加入收藏

TOP

HDU 1070 Milk
2015-07-20 17:12:47 来源: 作者: 【 】 浏览:2
Tags: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;
}
  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇BZOJ 3522 Poi2014 Hotel DFS 下一篇LeetCode Multiply Strings

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·有没有哪些高效的c++ (2025-12-27 08:20:57)
·Socket 编程时 Accep (2025-12-27 08:20:54)
·计算机网络知识点总 (2025-12-27 08:20:52)
·一篇说人话的文章, (2025-12-27 07:50:09)
·Python Web框架哪家 (2025-12-27 07:50:06)