【ACM】杭电OJ 1009 (FatMouse' Trade)。

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

 

两个条件貌似缺一不可

不明白为什么不能是sum+=(s[i].value*s[i].cat_food);

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int maxn = 1010;

typedef struct 
{
    int  java_bean;
    int cat_food;
    double value;
}S;

S s[maxn];

bool cmp(S a,S b)
{
    return a.value>b.value;
}

int main ()
{
    int M,N,i,total;
    double sum;
    while(scanf("%d%d",&M,&N)!=EOF)//M份猫粮
    {
        if(M==-1 && N==-1)
            break;
        for(i=0;i<N;i++)
        {
            scanf("%d%d",&s[i].java_bean,&s[i].cat_food);
            s[i].value=1.0*s[i].java_bean/s[i].cat_food;//一份cat_food可以换多少java_bean
        }
        sort(s,s+N,cmp);
        i=0;
        total = M;
        sum=0;
        while(total>0 && i<N)
        {
            if(total >= s[i].cat_food)
            {
                sum+=s[i].java_bean;
                total-=s[i].cat_food;
            }
            else
            {
                sum+=(s[i].value*total);
                total=0;
            }
            i++;
        }
        printf("%.3lf\n",sum);
    }
    return 0;
}

 

杭电ACM OJ 1009 FatMouse' Trade 简单的贪心算法 入门级 翻译好题目就能做出来 FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 82705    Accepted Submission(s): 28651 Problem Description FatMouse 阅读详情

相关推荐

杭电OJ1009-C++语言

    刚开始用C写的,编译器运行通过了就美滋滋的提交了,结果在OJ上报了错???点开一看,晕;    错误计数超过100?写的这么烂吗;    反思了一下,明明没有用cmath为什么会产生这样的错误,想着可能时因为犯懒用了sort函数,产生了什么我不知道的错误;反思不出来,百度了一下,看不懂,好像说是using namespace std用在C函数里就可能会出现这样的问题;嗯看来我的猜测没问题;...

ruiruiruiruirain的博客 568

杭电acm1009 FatMouse'Trade

FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 84996    Accepted Submission(s): 29492 Problem Description FatMouse

cwhong_723的博客 865

杭电OJ——1009

仓库有 N 个房间。第 i 个房间包含 J [i] 磅 JavaBeans,需要 F [i] 磅猫粮。FatMouse 不必交易房间里所有的 JavaBeans,相反,如果他支付 F [i]*a% 磅猫粮,他可能会得到 J [i]*a% 磅 JavaBeans。然后是 N 行,每行分别包含两个非负整数 J [i] 和 F [i]。输出:对于每个测试用例,在一行中打印一个精确到小数点后 3 位的实数,这是 FatMouse 可以获得的最大 JavaBean 数量。// 按照 J[i]/F[i] 非递增排序。

Wangawf的博客 1167

杭电acm1009

Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean. The warehouse has N rooms. The i-th room conta

编程小白的进阶之路 1267

杭电OJ——ACM 1009.FatMouse‘ Trade

肥老鼠换东西,m磅猫食,n间房子,每个房间有J[i]磅JavaBean,对应一个猫守卫需要F[i]磅猫食,可以按比率获取JavaBean,怎样才能获得最大数量的JavaBean。

peng_YuJun的博客 872

杭电ACM 1009FatMouse' Trade

原创作品 转载请注明出http://blog.csdn.net/always2015/article/details/47747077这一道题意思就是老鼠用猫食物换取自己最喜爱的食物javaBean的过程,当然换取的最终结果是保证最后的JavaBean是最多的,而且是当自己手中的猫食物小于每个仓库所需交换的猫食物时候,可以手中有多少就交换多少。所以在解这道题时候要想到按照每个仓库javaBean最大

去实验室,奔跑吧 7060

杭电 ACM 1009 FatMouse' Trade

做完FatMouse' Trade, 发现这题其实有很多陷阱,一不小心就可能出错。其中有几个特殊的测试资料是这样的: 1. cat food 为 0 的情况; 2. j[i] 为 0 的情况; 3. f[i] 为 0 的情况; 呃……由于是第二次做,所以只记得这么多了。还是看看代码吧,我还不知道什么是贪心法,只是按照自己的思路做一遍,觉得由于它的测试数据量也不大(小于 1000),所以...

网站开发初中级代码参考-转载 97

杭电acm1009 FatMouse' Trade

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1009 FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 80018    Accepted Subm

HGS的博客 591

杭电OJ(HDU)-ACMSteps-Chapter Three-《FatMouse' Trade》《今年暑假不AC》《排名》《开门人和关门人》

杭电OJ(HDU)-ACMSteps-Chapter Three-《FatMouse' Trade》《今年暑假不AC》《排名》《开门人和关门人》

内方外圆 1806

杭电OJ1009FatMouse' Trade

思路分析: 对其价值进行排序,一次进入房间,拿取javabeen,直到自己手上的猫粮用完。 代码: #include #include #include #define MAX 100000 using namespace std; struct shu {     double j,f,v; }s[1000]; int cmp(shu a,shu b) {  

戦う! 358

杭电ACM——fatmouse's speed(DP)

最长递增子序列(与最大递增子序列基本一样) 状态:dp[i]:前i个数当中,以a[i]为结尾的递增子序列的最大长度 状态转移方程跟之前写的那篇最大递增子序列的差不多 #include<cstdio> #include<algorithm> #include<cstring> #define inf 100000 using namespace std; int ...

shamansi99的博客 350

杭电oj--1009(贪心算法)

 思路分析:先把每个仓库的性价比信息计算出来,然后在按性价比大小降序排列(从大到小),先把当前性价比大换掉,最后再把剩下的食物和当前 i 的性价比相乘,由此可AC. #include&lt;iostream&gt; #include&lt;vector&gt; using namespace std; struct info{ int J; int M; double cost; };...

qq_41048982的博客 1919

杭电OJ 1009(C++)

本题使用一个简单的贪心算法,首先计算每个房间交换的“性价比”,并从大到小排序。 如果M足够,则优先交换“性价比”高的房间的JavaBeans;M不足时,按照比例将所剩的M交换完。 #include <iostream> #include <iomanip> #include <algorithm> using namespace std; struct ...

Intelligence1028的博客 540

杭电oj1009(贪心算法)

典型贪心算法的运用。#include #include #define For(i,m,n) for(i=m;i<n;i++) using namespace std; typedef struct room { double j,f; }room; room r[1005]; //double rio[1005]; bool cmp(const room &a,const room &b)

CqZtw的博客 990

ACM--steps--1.3.1--FatMouse' Trade

FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5343 Accepted Submission(s): 1592   Problem Descript

木土的H—dyx 398

HDU 1009 FatMouse' Trade题解

Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean. The warehouse has N rooms. The i-th room con

靖空间 2706

杭电ACM1160——FatMouse's Speed

这题,很明显的动态规划。 按照老鼠的重量从小到大排序,重量一样的,按速度从大到小排序。 然后进行动态规划,dp[i] = dp[j] + 1;(符合条件的) 还有一点比较重要,就是输出的不唯一,样例的 4 4 5 9 7 和  4 4 5 9 8 都是对的。我输出的是4 4 5 9 8 下面的AC的代码: #include #include #include #in

XD 897

杭电 FatMouse' Trade

问题地址 FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6572 Accepted Submission(s): 1940

博客已搬迁到http://www.cnblogs.com/cniwoq/ 412

杭电ACM——1009,FatMousesTrade(贪心)

贪心算法。按每个屋子的性价比高低进行排序。即创建一个数组val[]=j[i]/f[i] 特别注意: 1.j[i]=0的情况; 2.f[i]=0的情况; 3.数据的类型。 #include&amp;amp;amp;lt;cstdio&amp;amp;amp;gt; using namespace std; double j[1005],f[1005],val[1005]; //注意,都要定义为浮点型,因为val[]=j[i]/f[i],性价比不...

shamansi99的博客 315
上一篇: 【ACM】杭电OJ 5055(Bob and math problem)
下一篇: 【ACM】杭电OJ 1789(Doing Homework again)
__zzz__
博客等级 码龄8年 218粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值