【Linux学习】Makefile学习(二)

FatMouse‘ Trade

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 40975    Accepted Submission(s): 13563

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 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.

Input

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.

Output

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.

Sample Input

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

Sample Output

13.333
31.500

无聊刷的贪心水题,主要是研究c++的浮点型问题。

1.头文件里加#include<iomanip>。

2.cout<<setioflags(io::fixed)<<setprecision(位数)<<变量<<endl;

AC代码如下:

#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;

struct H
{
    int x,y;
    double z;
}f[10005];

bool cmp(H a,H b)
{
    return a.z>b.z;
}

int main()
{
    int m,n;
    int i,j;
    while(cin>>m>>n,m!=-1&&n!=-1)
    {
        for(i=0;i<n;i++)
        {
            cin>>f[i].x>>f[i].y;
            f[i].z=(double)f[i].x/f[i].y;
        }
        sort(f,f+n,cmp);
        double sum=0;
        for(i=0;i<n;i++)
        {
            m-=f[i].y;
            if(m>0)
            {
                sum+=(double)f[i].x;
            }
            else
            {
                sum+=f[i].z*(m+f[i].y);
                break;
            }
        }
        cout<<setiosflags(ios::fixed);
        cout<<setprecision(3)<<sum<<endl;
    }
	return 0;
}

【Linux学习】Makefile学习(二),布布扣,bubuko.com

时间: 2025-01-02 03:51:38

【Linux学习】Makefile学习(二)的相关文章

linux下Makefile学习

1. 基本概念 关于程序的编译和链接: 编译 链接源码------中间代码------可执行文件.c .o编译过程中,主要检查语法是否正确,函数与变量声明是否正确,若函数未被声明,编译器会给出警告,但可以生成obj文件:链接时,主要链接函数和全局变量,负责管理中间目标文件,寻找函数的实现,若找不着,报链接错误码. 大多数情况下,由于源文件较多,编译生成的中间目标文件太多,在链接时要指出的中间目标文件太多,这对编译很不方便,所以可给中间目标文件打个包,window下称为库文件,即.lib文件:UN

Linux下Makefile学习笔记

makefile 可以用于编译和执行多个C/C++源文件和头文件. (1) #include "file.h" 和 #include <file.h> 的区别 #include "file.h" 会先在当前目录下查找file.h,然后才在系统头文件目录中进行查找: #include <file.h>会先查找系统头文件目录,默认是不会在当前目录下查找的. (2) 关于在头文件中使用#ifndef 和 #define 头文件的主要作用在于多个代码

[arm学习]makefile学习总结

makefile不仅仅是一个命令的集合体,其中有一些规则是需要理解掌握的. 首先,了解makefile的规则: //-----------格式---------- 目标 : 依赖1,依赖2 (TAP键)命令 //------------------------- 1.目标,就是我们想生成的文件. 2.依赖往往是我们已经有的文件,是生成目标的必要条件. 3.命令就是利用依赖来产生目标. 命令不是任何情况都可以执行的,它是有条件的: 1.目标不存在 or  2.依赖已更新(首先依赖是存在的). 牛刀

linux网络编程学习笔记之二 -----错误异常处理和各种碎碎(更新中)

errno 在unix系统中对大部分系统调用非正常返回时,通常返回值为-1,并设置全局变量errno(errno.h),如socket(), bind(), accept(), listen().erron存放一个正整数来保存上次出错的错误值. 对线程而言,每个线程都有专用的errno变量,不必考虑同步问题. strerror converts to English (Note: use strerror_r for thread safety) perror is simplified str

Linux System Programming 学习笔记(二) 文件I/O

1.每个Linux进程都有一个最大打开文件数,默认情况下,最大值是1024 文件描述符不仅可以引用普通文件,也可以引用套接字socket,目录,管道(everything is a file) 默认情况下,子进程会获得其父进程文件表的完整拷贝 2.打开文件 open系统调用必须包含 O_RDONLY,O_WRONLY,O_RDWR 三种存取模式之一 注意 O_NONBLOCK模式 int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644

Linux学习之CentOS(二)----远程登录管理工具SecureCRT的使用

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3919940.html 联系方式:[email protected] [正文] 虚拟机版本:VMware Workstation_10.0.3 Linux系统版本:CentOS_6.5(64位) 一.前言: 前几天做了一回小白,安装了上个月发布的最新版CentOS 7 ,发现在学习的时候有很多地方和

马哥Linux学习笔记之二——网络

1.MAC(Media Access Control,介质访问控制) 是解决底层数据通信冲突的解决方案.因此,给每一个接入这样网络的主机一个id标示符,这个id标示符就叫做MAC地址. 2.CSMA/CD(Carrier Sense Multipath Access Collision Detection,载波侦听多路访问冲突检测),线型网络 以太网Ethernet最核心的标志. 3.Token-Ring(IBM)技术 环形网络解决冲突的方案.但是由于IBM的专利限制没能推广开来. 4.星形网络

Makefile学习教程 跟我一起写 Makefile

https://github.com/zhangliyong/myknowledge/blob/master/Makefile%E5%AD%A6%E4%B9%A0%E6%95%99%E7%A8%8B%20%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99%20Makefile.wiki ++ Makefile学习教程 跟我一起写 Makefile 0 Makefile概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Wi

Makefile 学习&amp;binutils工具集,软件开发利器

gcc -E 能有效的帮助我们解决与宏有关的编译错误: gcc -S能获得一个C源程序文件的汇编程序: gcc -v能获得系统头文件的路径 生成依赖关系: gcc -M gcc -MM 生成不包含系统头文件的依赖关系 指定链接库: gcc -L:告诉gcc可以从哪个目录查找库文件: gcc -l :用于告诉gcc在生成可执行程序时需要链接的库名: 一.静态库生成步骤如下:步骤一:生成 str_out.o 目标文件gcc -c str_out.c注:不加 -o 则生成同名的 *.o 目标文件(st