hdu-1009 FatMouse' Trade(贪心算法)
来源:互联网 发布:dbc2000数据库64位 编辑:程序博客网 时间:2024/05/21 21:39
题目大意:
老鼠有M磅猫食。有N个房间,每个房间前有一只猫,房间里有老鼠最喜欢的食品JavaBean,J[i]。若要引开猫,必须付出相应的猫食F[i]。当然这只老鼠没必要每次都付出所有的F[i]。若它付出F[i]的a%,则得到J[i]的a%。求老鼠能吃到的做多的JavaBean。
解题思路:
老鼠要获得最多的食品,就要用最小的猫食换取最多的猫食,这就要求J[i]/F[i]的比例要大。J[i]/F[i]的比例越大,证明在这个房间,小鼠付出得到的收获最有价值。于是我们将设置结构体,结构体里设置percent放置J[i]/F[i]。然后对结构体数组进行排序。依次按比例排序的付出猫食,即可。
例子:
输入
5 3
7 2
4 3
5 2
按J[i]/F[i]排序后:
7 2
5 2
4 3
在第一排数据上,小鼠付出2个猫食换得7个JavaBean。
在第二排数据上,小鼠付出2个猫食换得5个JavaBean。
在第三排数据上,小鼠只剩下1个猫食,便用这一个猫食换取1/3*4个JavaBean。
所以,总共换得13.333个JavaBan。
#include <stdio.h>#include <algorithm>using namespace std;struct Trade {int j, f;double percent;} mouse[3001];bool cmp(Trade a, Trade b){return a.percent > b.percent;}int main(void){int n, m;while(scanf("%d%d", &m, &n)!=EOF && (m!= -1 || n != -1)){int i;for(i = 0; i < n; i++)// 输入数据 {scanf("%d %d", &mouse[i].j, &mouse[i].f);mouse[i].percent = (double)mouse[i].j / mouse[i].f;}sort(mouse, mouse + n, cmp);double sum = 0; // 换得的javaBean之和 for(i = 0; i < n; i++){if(m > mouse[i].f)// m是手中的猫食 {sum += mouse[i].j;// 换得的javaBean之和m -= mouse[i].f;// 减去所需要的猫食 }else{sum += mouse[i].percent * m;m = 0;break;}}printf("%.3lf\n", sum);}return 0;}
0 0
- hdu-1009 FatMouse' Trade(贪心算法)
- HDU 1009 FatMouse' Trade (贪心算法)
- hdu-1009 FatMouse' Trade 贪心算法
- hdu 1009 FatMouse' Trade(贪心)
- hdu 1009 FatMouse' Trade (贪心)
- HDU 1009 FatMouse' Trade【贪心】
- hdu 1009 FatMouse' Trade(贪心)
- hdu 1009 FatMouse' Trade(贪心)
- hdu 1009 FatMouse' Trade(贪心)
- HDU-1009 FatMouse' Trade 贪心
- hdu 1009 FatMouse' Trade(贪心)
- hdu 1009 FatMouse' Trade 贪心
- hdu 1009 FatMouse' Trade(贪心)
- hdu 1009 FatMouse' Trade【贪心】
- HDU 1009 FatMouse' Trade(贪心)
- HDU 1009:FatMouse' Trade【贪心】
- HDU 1009 FatMouse' Trade 贪心
- 贪心 HDU 1009 FatMouse' Trade
- 页面加载时就运行javascript函数
- leetcode ZigZag Conversion
- 如何使网站可使用HTTPS访问
- HTTP Status 404 -(tomcat,springmvc,ModelAndView)
- 搭建Dynamic Web Project(动态web项目)的springmvc工程1
- hdu-1009 FatMouse' Trade(贪心算法)
- jps ps
- MD5加密
- 绘画
- leetcode Reverse Integer
- 每个男生都会不经意的成为浪漫的制造者。
- 安装与配置windbg的symbol(符号)
- C++对象模型之简述C++对象的内存布局
- poj2965 The Pilots Brothers' refrigerator