思路分析:

先求出每个品牌平均每天的花费,再比较这些平均花费的大小,选择最小的即可。如果平均花费相同,则选择容量大的品牌。可以用一个结构体来储存品牌相关信息:

struct brand
{char ch[120];int price;int v;double ave; /* the average cost of one day */
};
typedef struct brand BRAND;

注意:

1、如果一瓶的奶量少于200ml,则应该忽视这个品牌。

2、如果一瓶的奶量高于1000ml(够喝5天的了),则平均花费只需要用单价除以5即可。

3、只买一次奶,最多喝5天。

代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct brand
{char ch[120];int price;int v;double ave; /* the average cost of one day */
};
typedef struct brand BRAND;
int compare(const void *a,const void *b) /* high to low order */
{BRAND *x = (BRAND*)a;BRAND *y = (BRAND*)b;if(x->v < y->v)return 1;else if(x->v == y->v)return 0;elsereturn -1;
}
int find_min(BRAND *bd,int len)
{int i,ix_min = 0;for(i = 1 ; i < len ; ++i){if(bd[i].ave < bd[ix_min].ave)ix_min = i;}return ix_min;
}
double cost(BRAND *b) /* the cost of one day */
{return (double)b->price / (b->v / 200);
}
int main(int argc, char *argv[])
{int T,t,i,j,n;BRAND bd[110];scanf("%d",&T);for(t = 1 ; t <= T ; ++t) /* T input set */{memset(bd,0,sizeof(bd));scanf("%d",&n); /* amount of the brands */for(j = 0 ; j < n ; ++j){scanf("%s",bd[j].ch); /* the information of the brand */scanf("%d%d",&bd[j].price,&bd[j].v);if(bd[j].v < 200) /* not enough */{bd[j].ave = 9999999;continue; /* get the next brand */}if(bd[j].v > 1000)bd[j].ave = bd[j].price / (double)5;elsebd[j].ave = cost(&bd[j]);}qsort(bd,n,sizeof(BRAND),compare);printf("%s\n",bd[find_min(bd,n)].ch);}return 0;
}

转载于:https://www.cnblogs.com/whongfei/archive/2012/10/31/5247024.html

【ACM】杭电1070:Milk相关推荐

  1. 5410 ACM 杭电 01+完全背包

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5410 虽然是英文题目:但还是很好理解的.明显的背包问题 思路:如果你能想到把题目拆分成小问题,就会简单许多 ...

  2. 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂

    文章目录 前言 一.名称定义 1.最大公约数 2.辗转相除法 3.更相减损法 二.ACM杭电入门题 1.解题思路 三.解题参考代码(C语言,C++) 0.最优算法(C++) 1.辗转相除求解(C语言) ...

  3. 杭电acm2151题java的解法,杭电ACM题型分类

    杭电ACM题型分类 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1 ...

  4. 杭电ACM(HDUOJ)试题分类

    杭电ACM试题分类 第一篇 1001 这个就不用说了吧                      1002 简单的大数                            1003 DP经典问题,最 ...

  5. 杭电acm第2304题答案c语言,【转】杭电ACM试题分类

    注:网上搜的 第一篇 1001 这个就不用说了吧 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 1005 找规律(循环点) 1006 感觉有点BT的题,我到现在还没过 ...

  6. 杭电ACM题目类型整理

    版权声明:(╯3╰) 转载请注明: http://blog.csdn.net/bat67 杭电acm题目分类版本1 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 10 ...

  7. 【杭电ACM】1097 A hard puzzle

    [杭电ACM]1097  A hard puzzle http://acm.hdu.edu.cn/showproblem.php?pid=1097 先用int手写了算法结果竟然wrong answer ...

  8. 杭电ACM刷题(1):1002,A + B Problem II

    最近忙于考试复习,没有多少可供自己安排的时间,所以我利用复习之余的空闲时间去刷刷杭电acm的题目,也当对自己编程能力的锻炼吧. Problem Description I have a very si ...

  9. 杭电acm a+b问题

    杭电acm 1000 a+b问题代码 int main() { int a,b; for(;~scanf("%d%d",&a,&b);printf("%d ...

最新文章

  1. 背包思想计算方案的总数(货币系统)
  2. tcpdump的使用
  3. IDEA 快捷键终极大全
  4. 博客堂怎么连个搜索功能都没有
  5. C# 中的占位符本质
  6. Redis数据结构之列表
  7. 保存最大的前20项暴力--Heritage of skywalkert
  8. 问题六十八:光照模型(Light model)——关于“环境光”模型的补充
  9. [转载]allowTransparency属性
  10. JAVA----简单的自旋锁
  11. 《遥感原理与应用》总结—遥感物理基础
  12. 提供免费的 客户资源管理系统 -真的很经典
  13. MySQL定时任务,清理表数据
  14. 中国实业能成为怎样的互联网公司
  15. MATLAB泰勒展开lnx,lnx泰勒展开公式形式,lnx泰勒展开式怎么展开,sinx泰勒展开
  16. 点菜宝系统服务器无响应,点菜宝系统精典方案介绍
  17. selenium处理iframe标签
  18. imx6ull中断体系之GICV2
  19. Zabbix 主动/被动 监控
  20. 针对前端js加密解密方法的兼容问题(兼容ie5以上哦)

热门文章

  1. 使用VSCode时,执行ng serve出错
  2. idea DataGrip 使用图解教程
  3. java this()函数_Java经典面试题之(如何正确的使用this?)
  4. mysql 字段唯一效率_对于同一个字段使用唯一性索引和非唯一性索引,效率有区别吗???...
  5. c语言解三元一次方程组_一次二次反比例,一山更比一山高?二次函数三大解析式详解...
  6. eventlistener java_EventListener原理
  7. 微信小程序开发入门篇
  8. xp 远程桌面无法找到该计算机,XP系统中远程无法连接指定计算机的处理方法
  9. 2022年考研计算机-数据库原理8-11章
  10. Git教程_3 IDEA管理