九度OJ 1433 FatMouse -- 贪心算法

时间:2024-01-10 01:05:34 标签:  贪心算法  算法  

题目地址:http://ac.jobdu.com/problem.php?pid=1433

题目描述:

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 contains J[i] pounds of JavaBeans and requires F[i] pounds of cat food. FatMouse does not have to trade for all the JavaBeans in the room, instead, he may get J[i]* a% pounds of JavaBeans if he pays F[i]* a% pounds of cat food. Here a is a real number. Now he is assigning this homework to you: tell him the maximum amount of JavaBeans he can obtain.

输入:

The input consists of multiple test cases. Each test case begins with a line containing two non-negative integers M and N. Then N lines follow, each contains two non-negative integers J[i] and F[i] respectively. The last test case is followed by two -1's. All integers are not greater than 1000.

输出:

For each test case, print in a single line a real number accurate up to 3 decimal places, which is the maximum amount of JavaBeans that FatMouse can obtain.

样例输入:

5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1

样例输出:

13.333
31.500
#include <stdio.h>
#include <stdlib.h>
 
typedef struct fj{
    int food;
    int javabean;
    double rate;
}FtoJ;
 
int compare(const void * p, const void * q){
    FtoJ * p1 = (FtoJ *)p;
    FtoJ * q1 = (FtoJ *)q;
    if (p1->rate - q1->rate > 0) return -1;
    if (p1->rate - q1->rate == 0) return 0;
    if (p1->rate - q1->rate < 0) return 1;
}
 
int main(void){
    int m, n;
    FtoJ trade[1000];
    int i;
    double sum;
 
    while ((scanf ("%d %d", &m, &n) != EOF) && (m != -1) && (n != -1)){
        for (i=0; i<n; ++i){
            scanf ("%d %d", &trade[i].javabean, &trade[i].food);
            trade[i].rate = (double)trade[i].javabean / (double)trade[i].food;
        }
        qsort (trade, n, sizeof(FtoJ), compare);
        i  = 0;
        sum = 0;
        while (m > 0 && i<n){
            if (m >= trade[i].food){
                sum += (double)trade[i].javabean;
                m -= trade[i].food;
            }
            else{
                sum += (double)trade[i].javabean * ((double)m / (double)trade[i].food);
                m = 0;
            }
            ++i;
        }
        printf ("%.3lf\n", sum);
    }
 
    return 0;
}
来源:https://blоg.сsdn.nеt/m0_72345017/аrtiсlе/dеtаils/128053000

智能推荐

题目地址&#xff1a;http://ac.jobdu.com/problem.php?pid&#6

标签:贪心算法  算法  

题目来源&#xff1a;杭电acm1009

标签:贪心算法  c语言  算法  数据结构  

A - 汽车加油问题

标签:算法  

正所谓贪心不足蛇吞象 其大意是&#xff1a;从前有一个很穷的人救了一条蛇的命&#x

标签:c++  贪心算法  算法  动态规划  c++  青少年编程  

贪心算法&#xff1a;任务调度问题         在任务调度问题中&#xff

标签:Python算法30篇  贪心算法  算法  

贪心

标签:c++  贪心算法  c++  算法  

4.更多练习题 4&#xff09;

标签:leetcode(c++)  贪心算法  leetcode  算法  c++  

持续更新中........................ 455. 分发饼干

标签:leetcode  leetcode  

一、问题分析

标签:贪心算法  算法  

一、问题描述         设有N个独立的作业{1,2,...,n},由M台相同的

标签:贪心算法  算法  动态规划  

什么是贪心 贪心的本质是选择每一阶段的局部

标签:贪心算法  算法  leetcode  

贪心算法在每一次做决策时,保证当下的决策是最优的,从而使得最后的结果是最优的。455. 分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。# 最好的选择是不要浪费饼干class So

标签:算法  贪心  python  Greedy  Algorithm算法  贪心  python  Greedy  Algorithm  

猜你喜欢

一、什么是贪心算法 贪心算法&#xff1a;一种在每次决策时&#xff0c;

标签:算法  学习  贪心算法  

1 贪心算法的思想         Linear Deterministic G

标签:图分区问题  算法  贪心算法  

课前思考&#xff1a;贪心是什么&#xff1f;贪心如何“贪”&#xff1f; 课

标签:算法  贪心算法  

860.柠檬水找零 情况一&#xff1

标签:贪心算法  算法  

贪心算法&#xff08;Greedy Algorithm&#xff09;是一种常用的算法策略&#xf

标签:贪心算法  c语言  算法  

1.分发饼干 得排序一下。

标签:算法  贪心算法  

贪心算法及证明

标签:贪心算法  算法  

什么是贪心&#xff1a; 贪心算法是一种常见的算法思想&#xff0c;它通常用

标签:c++  贪心算法  开发语言  

每一步都做出一个局部最优的选择&#xff0c;最终的结果就是全局最优 只有一部分问题

标签:leetcode  leetcode  

&#39;&#39;&#39;一、具有贪心选择结构 复杂

标签:贪心算法  python  算法  数据结构  pycharm  

贪心算法基本概念&#xff1a; 贪心的本质是通过选取局部最优达到全局最优。

标签:算法  leetcode  python  

122. Best Time to Buy and Sell Stock II

标签:java  算法  开发语言  

在一个宁静的早晨&#xff0c; 迪迦奥特曼突然发现了一个奇特的物体。这个物体是一个来自未知星球的超

标签:贪心算法  算法  

1319 【例6.1】排队接水

标签:02 信息学奥赛一本通  贪心算法  算法  数据结构  

一.贪心算法的定义         贪心算法是指在对问题求解时&#xff0c;总

标签:数据结构与算法  数据结构  贪心算法  算法  

相关问题

相关文章

热门文章

推荐文章

相关标签