xynuoj 1247 fatmouse'trade
来源:互联网 发布:加油好男儿现状 知乎 编辑:程序博客网 时间:2024/06/05 07:23
老鼠准备了M磅猫食,准备拿这些猫食跟猫交换自己喜欢的食物。有N个房间,每个房间里面都有食物。你可以得到J[i]但你需要付出F[i]的猫食。要你计算你有M磅猫食可以获得最多食物的重量。
思路:贪心算法,求最优解。将J[i]/F[i]的值从大到小排列,总是先取最大的,就能保证能够得出的最大值
(1)如果当前老鼠剩下的猫粮大于兑换当前仓库所有的豆子的所需的猫粮量,则兑换该仓库的所有豆子,豆子总量增加该仓库总豆子量的值,所剩猫粮总量减去兑换当前仓库所有豆子所需猫粮量;
(2)如果当前老鼠剩下的猫粮小于兑换当前仓库所有的豆子的所需的猫粮量,则兑换该仓库的所有豆子*所剩猫粮/所需的猫粮量,豆子总量增加所有豆子*所剩猫粮/所需的猫粮量(注意精度,这里的值可能会产生小数),所剩猫粮总量置0
#include <stdio.h>
#include <algorithm>
using namespace std;
struct Node
{
double j,f,p;
} node[10000]; //结构体
int cmp(Node x,Node y)
{
return x.p>y.p;//降序排列
}
int main()
{
int m,n;
while(~scanf("%d%d",&n,&m) && (m!=-1 || n!=-1))
{
double sum = 0,max = 0;
int i,j;
for(i = 0; i<m; i++)
{
scanf("%lf%lf",&node[i].j,&node[i].f);
node[i].p = node[i].j/node[i].f;
}
sort(node,node+m,cmp);
for(i = 0; i<m; i++)
{
if(n>node[i].f)
{
sum+=node[i].j;
n-=node[i].f;
}
else
{
sum+=node[i].p*n;
break;
}
}
printf("%.3lf\n",sum);
}
return 0;
}
C++
#include <stdio.h>
#include <stdlib.h>
struct Node
{
double j,f,p;
} node[10000];
int cmp(const void *a,const void *b)
{
return (*(Node *)a).p>(*(Node *)b).p?-1:1; 结构体比较!!!
}
int main()
{
int m,n;
while(~scanf("%d %d",&n,&m) && (m!=-1 || n!=-1))
{
double sum = 0;
int i;
for(i = 0; i<m; i++)
{
scanf("%lf %lf",&node[i].j,&node[i].f);
node[i].p = node[i].j/node[i].f;
}
qsort(node,m,sizeof(node[0]),cmp);
for(i=0; i<m; i++)
{
if(n>node[i].f)
{
sum+=node[i].j;
n-=node[i].f;
}
else
{
sum+=node[i].p*n;
break;
}
}
printf("%.3lf\n",sum);
}
return 0;
}
- xynuoj 1247 fatmouse'trade
- XYNUOJ 1247 FatMouse's Trade—贪心算法
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- cvte-c++-笔试2
- c++实现装饰器模式
- 文章标题 基础RMQ
- STL算法分析
- 1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的
- xynuoj 1247 fatmouse'trade
- android 定向分享app
- UIAutomator之---UiDevice
- 线程等待,退出
- 集合框架——泛型
- 3、JVM运行时数据区
- Unity图片浏览插件——Uniflow源码解析ZZ
- 【DP+组合数学】Codeforces559C[Gerald and Giant Chess]题解
- [PAT乙级]1026. 程序运行时间(15)