HDOJ.1070 Milk(贪心)_pengwill97的博客-程序员秘密

Milk

点我挑战题目

题意分析

每组测试数据给出一系列牛奶商品,分别是牛奶的品牌,价格,以及体积。在读取数据的时候,体积在200以下的牛奶直接忽略掉。并且每天要喝200ML的牛奶。但是无论牛奶体积有多么大,牛奶最多喝5天,也就是说每盒牛奶最多喝1000ml,当牛奶的体积不为200整数倍的时候,多余的直接扔掉不喝。现在编写程序挑选出最便宜的牛奶。
贪心策略。
最便宜的就是价钱最低,当然要计算平均某量所花的钱。这个量是平均每体积还是平均每天呢?当然是平均每天。因为如果体积大于1000ml多余的部分是不喝的,尽管单位体积再便宜,实际喝掉的也就是1000ml。当然可以理解为平均有效体积所花的钱。最简单的方法就是每盒牛奶所花的钱/这盒牛奶所能喝的天数,按照升序排列后,输出第一项即可。注意排序时,若价钱相等,则体积大的在前面。

代码总览

/*
    Title:HDOJ.1070
    Author:pengwill
    Date:2016-11-24
*/
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define max 110
using namespace std;
struct milk{
    char name[max];
    //int price;
    int v;
    int day;
    double rate;
}item[max];
bool cmp(milk a, milk b)
{
    if(a.rate < b.rate){
        return true;
    }else if(a.rate == b.rate){
        if(a.v>b.v){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }

}

int main()
{
    //freopen("in.txt","r",stdin);
    char tname[max];
    int tprice;
    int tv;
    int t,n;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        int i;
        for(i = 0;i<n;i++){
           scanf("%s %d %d",tname,&tprice,&tv);
                //item[i].price = tprice;
                if(tv<200){
                    n--;
                    i--;
                    continue;
                }else if(tv>=1000){
                    strcpy(item[i].name,tname);
                    item[i].v = tv;
                    item[i].day = 5;
                    item[i].rate = 1.0 * tprice / 5;
                   // break;
                }else {
                    strcpy(item[i].name,tname);
                    item[i].v = tv;
                    item[i].day = tv / 200;
                    item[i].rate = 1.0 * tprice / item[i].day;
                   // break;
                }

            //}
        }
        sort(item,item+n,cmp);
        printf("%s\n",item[0].name);


    }
    return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pengwill97/article/details/53319004

智能推荐

用户无法ssh远程登录(示例代码)_用户不支持ssh_格格巫 MMQ!!的博客-程序员秘密

查看问题虚机后,发现配置文件没有问题,IP地址本地可以PING通,文件没有缺失,服务端口正常,但是从本地SSH无论如可都无法连接,提示内容如下:技术分享查看日志技术分享怀疑是ssh全部IP被禁止查看/etc/hosts.deny发现sshd:ALL没有被注释掉加上#后,重启服务问题解决……...

数组概述_weixin_33912453的博客-程序员秘密

数组数组可以存放多个同一类型的数据。数组的用法:00.程序员用法000.数组的定义:数组类型 数组名[]=new 数据类型[大小]001.数组的引用:数组名[下标]01.没事找事用法000.先声明数组001.创建数组002.数组的引用02.古板用法000.初始化数组语法:数据类型  数组名[]={元素值,元素值……}001.数组...

利用__attribute__((section()))构建初始化函数表与Linux内核init的实现___attribute__((setction))初始化模块__Brave_的博客-程序员秘密

问题导入传统的应用编写时,每添加一个模块,都需要在main中添加新模块的初始化使用__attribute__((section()))构建初始化函数表后,由模块告知main:“我要初始化“,添加新模块再也不需要在main代码中显式调用模块初始化接口。以此实现main与模块之间的隔离,main不再关心有什么模块,模块的删减也不需要修改main。那么,如何实现这个功能呢?如何实现DECLARE_INI...

为什么arguments是类数组对象_weixin_30430169的博客-程序员秘密

为什么JavaScript里函数的arguments只是array-like object?只是标准这么规定的,还是有什么设计原因在里面?JavaScript的函数里面的arguments对象有 .lengh 属性和可以通过 [] 访问,但是确实从Object.prototype继承的。很多时候都会用 Array.prototype.slice.call(argum...

ExtJS学习笔记(二) 基本登录_萧逸2005的博客-程序员秘密

<br /> <br /> <br />主页 <br />假设您的主页是 index.asp, 它的结构如下: <br /> <br /> <br /> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html> <head> <link rel="stylesheet" type="text/css" href="/ig

微信公众号学习--点亮图片_不忘初心_不惧将来的博客-程序员秘密

准备两张图(一张为黑白,一张为彩色)点击布局里选择基础布局选择SVG布局将黑白色的图片放入SVG框中点击图片的定位,将段前距离和段后距离改为0点击外部灰色的框,点击动画选择图片,将彩色图片添加进去动画触发选择【点击】动画类别选择【淡入】10.制作完成后点击预览,即可查看效果。...

随便推点

void Uart_Printf(char *fmt,...)_char *fmt, ...)_chengqingting的博客-程序员秘密

void Uart_Printf(char *fmt,...) //...表示可变参数(多个可变参数组成一个列表,后面有专门的指针指向他),不限定个数和类型, { va_list ap;//初始化指向可变参数列表的指针 char string[256]; va_start(ap,fmt);//将第一个可变参数的地址付给ap,即ap指向可变参数

小隐于野,大隐于市——南京·巴布洛生态谷_weixin_34417200的博客-程序员秘密

航迹大放送来了!!!南京·巴布洛生态谷航拍浓情花海/赏草原风情/体验丰收采摘越野卡丁车、水上高尔夫/儿童乐园/森林探险/房车2日游给你想不到的!转载于:https://juejin.im/post/5bf3c4776fb9a049d235a970...

关于VSCode调试无法支持中文路径的曲线救国方法_Peak0524的博客-程序员秘密

虽然原则上,为了避免不必要的问题,代码相关最好是使用全英文路径,但是对有些人来说,中文名的识别比英文强万倍,所以,这里不讨论直接使用英文。最近在LeetCode刷题,刷题时本地测试用的代码都是放在同一个文件夹中,使用中文命名方便识别但是在使用vscode编译的时候会提示无法找到文件通过测试修改文件夹名称之后发现是中文路径的问题,也找了解决办法,需要修改系统编码方式,如此说述https://blog.csdn.net/xdfsa/article/details/105174254,但.

mongodb数据同步至mysql_Kettle+MongoDB 数据同步到MySQL_淑女不是姐的范er的博客-程序员秘密

Kettle+MongoDB 数据同步到MySQL1、前言:MongoDB中的date类型以UTC(Coordinated Universal Time)存储,isodate类型,就等于GMT(格林尼治标准时)时间。而北京所处的是+8区,所以mongo shell会将当前的GMT+0800时间减去8,存储成GMT时间。2、抽取作业概述3、组件选择:4、增量处理:在MongoDB中查询如下是正确的:...

C语言如何输入输出字符串_c语言输出字符串_鼹鼠的萝卜的博客-程序员秘密

字符串的输入输出方法:逐个字符的输入输出%c,整个字符串的输入输出%s。 第一:scanf和printf输入输出字符串 (1)逐个字符的输入输出: char a[5]={}; int i=0; for(i=0;i<5;i++) { scanf("%c",&a[i]); printf("%c",a[i]); }逐个字符的输入要加

ubuntu linux 64位,你应该使用32位还是64位Ubuntu Linux? | MOS86_君君君君哥哥哥的博客-程序员秘密

Until Ubuntu 13.04,Ubuntu推荐所有用户在其下载页面上使用32位版本的Ubuntu。但是,由于某种原因,此建议已被删除在默认情况下,Microsoft已经在现代PC上安装64位版本的Windows多年,Ubuntu推荐使用其64位版本32位对比64位:什么简而言之,所有现代英特尔和AMD处理器都是64位处理器。64位处理器可以运行64位软件,允许他们使用更大量的RAM而无需任...

推荐文章

热门文章

相关标签