杭电OJ——ACM 1009.FatMouse‘ Trade
FatMouse’Trade
杭电OJ——ACM 1009.FatMouse’ Trade链接入口
问题描述
肥老鼠换东西,m磅猫食,n间房子,每个房间有J[i]磅JavaBean,对应一个猫守卫需要F[i]磅猫食,可以按比率获取JavaBean,怎样才能获得最大数量的JavaBean。
算法思想:
贪心算法:贪心法一般指,在对问题求解时,总是做出在当前看来最好的选择。
特点:不从整体最优解出发来考虑,它所做出的仅是在某种意义上的局部最优解。
贪心法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题都能产生整体最优解或整体最优解的近似解,强调高效性。
解题思路:
计算各房间的利润然后排序,从利润最高的开始交换。
C++版AC代码
#include<iostream>
#include<stdio.h>
using namespace std;
//用于浮点数的换位
void swapDouble(double *a,double *b){double temp;temp=*a;*a=*b;*b=temp;
}
//用于整型数的换位
void swapInt(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;
}
int main(){int M,N;cin>>M>>N;while(M!=-1&&N!=-1){int F[1000],J[1000];double a[1000];//折算出猫粮换JavaBean的比率for(int k=0;k<N;k++){cin>>J[k]>>F[k];a[k]=1.0*J[k]/F[k];}//将易物比率、猫粮、JavaBean按大小排序for(int i=0;i<N-1;i++){int flag=0;for(int j=0;j<N-i-1;j++){if(a[j]<a[j+1]){swapDouble(&a[j],&a[j+1]);swapInt(&J[j],&J[j+1]);swapInt(&F[j],&F[j+1]);flag=1;}}if(flag==0)break;}double sum=0;//开始由大到小为优先顺序用猫粮换JavaBeanfor(int t=0;t<N;t++){if(M>=F[t]){sum+=J[t];M-=F[t];}else{sum+=1.0*a[t]*M;break;}}printf("%.3lf\n",sum);cin>>M>>N;}
}
C++运行展示:
----------EOF----------
杭电OJ——ACM 1009.FatMouse‘ Trade相关推荐
- 杭电OJ——ACM 1003.Max Sum
Max Sum 杭电OJ--ACM 1003.Max Sum链接入口 问题描述 大意: 给定一个序列a[1],a[2],a[3]-a[n],你需要算出其子序列中的最大值.比如说:给你一个 ...
- 赛马网ACM试题(原杭电oj ACM)java版答案(1000,10001,1002)
赛马网ACM试题(原杭电OJ ACM试题)答案(java版) Author : Zhang Hailong Date : 2015-09-17 HomePage : http:// E ...
- 【ACM】杭电OJ 2037
题目链接:杭电OJ 2037 先把b[i]进行排序,然后,b[i]与a[i+1]进行比较. #include <iostream> #include <cstdio> #inc ...
- 【ACM】杭电OJ 2020(排序)
题目链接:杭电OJ 2020 排序可以有冒泡排序,选择排序,或者直接调用函数. 下面是选择排序: #include <stdio.h> #include <math.h> in ...
- 【ACM】杭电OJ 2018
题目链接:杭电OJ 2018 从n>4开始,每一年的牛的数量=前一年的牛的数量+三年前的牛的数量 问:为什么是三年前? 答:假设三年前有一头小牛出生,出生的那一年即为第一年,到了第四年,即三年后 ...
- 【ACM】杭电OJ 1005
题目链接:杭电OJ 1005 超时代码如下(而且开辟的数组空间大小不够): #include <stdio.h> int m[100000]; int f(int n,int a,int ...
- 【ACM】杭电OJ 1004
题目链接:杭电OJ 1004 运行环境:Dev-C++ 5.11 思路: 先把先把num数组全部赋值为1:第一个颜色单独输入,从第二个开始,需要与前面的进行比较,如果前面有相同的颜色,则在目前的nu ...
- 【ACM】杭电OJ 2012。
题目链接:杭电OJ 2012 思路很简单,但是有一种高效算法显示编译错误,不知道为什么 运行环境:VS2017 AC代码: #include <stdio.h> #include < ...
- 【ACM】杭电OJ 1003。
运行环境VS2017 题目链接:杭电OJ 1003 主要思想是: 用d[i]来存放前i项中最大的和,得到end,然后再倒推,得起始的位置begin 然而在程序42行的疑问,大家可以讨论一下吗???? ...
最新文章
- android 实现 下拉筛选的效果
- jQuery hash
- 框架 路由地址_Django框架的使用
- 客户端码农学习ML —— Numpy基本用法
- 送外卖也要“黑科技”?阿里移动感知技术应用揭秘
- 【Python图像特征的音乐序列生成】解析ABC格式的文件(修改版)
- 强大的Spring Boot启动监听器事件-初始化系统账号密码
- 微信快速开发框架(二) -- 快速开发微信公众平台框架---简介
- 计算机文件系统小结,文件系统总结
- paip.python错误解决23
- JS实现动态生成二维码,并在中间插入logo
- html php即时通讯_PHP在线客服即时通讯源码
- matlab中phantom函数,matlab官网上下的phantom3d不对
- 使用segue进行页面跳转
- drain open 线与_【转】open-drain与push-pull
- 求有限区间内素数个数
- Python读取PPT,PPT PPTX PPTM PPS PPSM PPSX
- mysql tcp性能优化_MySQL性能优化: 使用pt-query-digest分析慢查询日志
- py语法07-字符串的操作
- c语言小数除于整数怎么运算,C#:将int除以100