hdu1009 FatMouse' Trade
来源:互联网 发布:数据分析的应用有哪些 编辑:程序博客网 时间:2024/05/22 15:55
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1009
题目大意:老鼠想要用n个猫粮在m个房间中换取自己想要的食物。在第i个房间中用f[i]个猫粮可换取j[i]个食物,要求用n个猫粮在这m个房间中换取最多的食物。
解题思路:每个房间都有一个兑换率j[i]/f[i],将所有的房间按兑换率从大到小排序,最后在从前往后兑换,直到n个猫粮用完。
代码如下:
#include<cstdio>#include<algorithm>using namespace std;typedef struct node{ double x,y;}node;node p[1002];bool ab(node a,node b){ node c; c.x=a.x/a.y; c.y=b.x/b.y; if(c.x>=c.y) return true; else return false;}int main(){ int n,m,i; double sum,s; while(scanf("%d%d",&n,&m)!=EOF&&(n!=-1||m!=-1)) { for(i=0;i<m;i++) scanf("%lf%lf",&p[i].x,&p[i].y); sort(p,p+m,ab);//按兑换率从大到小排序,即按函数ab排序 s=n; for(sum=0.0,i=0;i<m;i++) { if(s>=p[i].y)//如果现有猫粮大于等于该房间需要猫粮则可兑换相应的食物更新现有猫粮 { sum+=p[i].x; s=s-p[i].y; } else //如果现有猫粮少于需要猫粮,则每颗只能兑换p[i].x/p[i].y,
//本次可兑换(p[i].x/p[i].y)*s个食物,猫粮在该次已经兑换完,结束 { sum+=(p[i].x/p[i].y)*s; break; } } printf("%.3lf\n",sum); }return 0;}
- HDU1009 FatMouse' Trade
- HDU1009 FatMouse' Trade
- 【贪心】 hdu1009 FatMouse' Trade
- HDU1009:FatMouse' Trade
- HDU1009 FatMouse' Trade
- hdu1009 FatMouse' Trade
- HDU1009 FatMouse' Trade
- HDU1009 FatMouse' Trade
- hdu1009 FatMouse' Trade(贪心)
- HDU1009 FatMouse' Trade贪心
- HDU1009 FatMouse' Trade 【贪心】
- hdu1009 FatMouse' Trade
- HDU1009 FatMouse' Trade 贪心
- hdu1009 FatMouse' Trade
- hdu1009 FatMouse' Trade(贪心)
- [贪心] HDU1009 FatMouse' Trade
- HDU1009 FatMouse' Trade
- HDU1009 FatMouse' Trade
- java 调用本地应用程序
- XAMPP 的 Mac OS X 版
- timus 1039. Anniversary Party URAL解题报告 树形DP
- 个人android学习笔记(随时添加)
- android对json解析
- hdu1009 FatMouse' Trade
- linuxCNC
- java实战(一)-----------jdk环境配置
- Git版本控制教程,原文保存在百度文库中
- PHP字符串过滤函数
- activiti5 流程复用技术 callActivity
- notifyDataSetChanged() 无法刷新问题
- 代码收藏1-转换小写英文首字母为大写
- java计算两日期之间的天数