贪心算法.我就不贴题了//no.1009
但是我的代码运行超时了…改了好久都不对…
看别人代码,顺便学习c++控制保留小数怎么操作;
我的错误代码:(时间占用可能是多次调用findmax造成的)

#include <iostream>
using namespace std;
int findmax(double [],int n);
int main()
{
int asset,nshop;
while(~scanf("%d%d",&asset,&nshop),asset,nshop)
{
int s[nshop-1][2],i;
double rate[nshop-1];
while (nshop--)
{
for (i = 0;i<nshop;i++)
{
scanf("%d%d",&s[nshop-1][0],&s[nshop-1][1]);
rate[i] = (double)s[nshop-1][0]/s[nshop-1][1];
}
}
int maxnum;
double ans = 0.0;
maxnum = findmax(rate,nshop-1);
while (s[maxnum][1]<=asset)
{
ans = ans+s[maxnum][0];
asset = asset-s[maxnum][1];
rate[maxnum] = 0.0;
maxnum = findmax(rate,nshop-1);
}
double r = s[maxnum][0]/(double)s[maxnum][1];
ans+=r*asset;
printf("%.3lf\n",ans);
}
return 0;
}
int findmax(double a[],int n)
{
int i,index = 0;
double max = a[0];
for (i = 0;i<n;i++)
if (a[i]>max)
{
index = i;
max = a[i];
}
return index;
}

ac代码:

#include <cstdio>    //贪心
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int N,M;
struct node{
int x,y;
double s;
}a[1000];
double cmp(node aa,node bb){
return aa.s>bb.s;
}
int main(){
double sum,ans,w;
int l,k;
while(~scanf("%d %d",&M,&N)){
if(M==-1&&N==-1) break;
for(int i=0;i<N;i++){
scanf("%d %d",&a[i].x,&a[i].y);
a[i].s=(1.0*a[i].x/a[i].y);
}
sort(a,a+N,cmp);//c++内置的sort算法
sum=0.0,ans=0.0;
for(int i=0;i<N;i++){
if(sum<=M){
if(sum+a[i].y<=M){
ans+=a[i].x;
sum+=a[i].y;
}
else{
ans+=a[i].s*(M-sum);
sum=M;
} }
else {
break;
}
}
printf("%.3lf\n",ans); }
return 0;
}

最好找时间再做一遍,看看掌握否
下面是c++控制输出:

	#include <iomanip>  //这是一定要有的头文件
//setprecision括号里的就是保留几位小数
cout<<fixed<<setprecision(2);//最简写法
//还有更复杂一些的写法,我不理解其意义
cout<<setiosflags(ios::fixed)<<setprecision(2);
//或者:
cout.setf(ios::fixed);
cout<<setprecision(2);

HDOJFatmouse肥鼠交易//c++控制保留小数的更多相关文章

  1. C++(五)— 控制保留小数位数

    1.C++中输出指定保留的小数位数. 这里还要注意,每次输出只要设置一次就行了,因为这两个的作用范围是后续对象,而不是仅对后一个对象起作用. #include<iostream> #inc ...

  2. java中double变量保留小数问题

    (转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点 ...

  3. C++ cout 如何保留小数输出

    参考 : http://upliu.net/how-cout-out-2-precision.html 大家都知道用 C 语言中 printf () 函数可以非常方便控制保留 几位小数输出 不过在 C ...

  4. Javascript 智能输入数字且保留小数点后三位

    html: <input type="text" name="cprice" placeholder="最多保留小数点后三位" onk ...

  5. C++ cout输出保留小数

    参考: http://www.cnblogs.com/wushuaiyi/p/4439361.html http://blog.csdn.net/edricbjtu/article/details/4 ...

  6. 格式化 float 类型,保留小数点后1位

    """  练习 :   小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,   并用字符串格式化显示出'xx.x%',只保留小数点后1位: &qu ...

  7. c#保留小数点后位数的方法

    Double dValue = 95.12345; ; string strValue = "95.12345"; string result = ""; re ...

  8. codevs 2988 保留小数 2

    2988 保留小数 2  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver       题目描述 Description 这个难度是吸引你点进来的.(其实难度挺 ...

  9. 总结C#保留小数位数及百分号处理

    方法一: ); 方法二: Math.Round() 方法三: double dbdata = 0.55555; string str1 = dbdata.ToString("f2" ...

  10. c++保留小数问题,如有不足或错误,欢迎指出

    #include<iostream> #include <iomanip> using namespace std; int main() { double a; cin> ...

随机推荐

  1. Logstash:解析 JSON 文件并导入到 Elasticsearch 中

    转载自:https://elasticstack.blog.csdn.net/article/details/114383426 在今天的文章中,我们将详述如何使用 Logstash 来解析 JSON ...

  2. 6.使用nexus3配置yum私有仓库

    yum相较于rpm,能够更好地解决安装软件时的依赖包问题,使用yum安装更简单更方便.搭建本地YUM源服务器,可以避免升级安装软件时占用公网带宽:有了本地YUM源服务器,可以解决无法连接Interne ...

  3. PAT乙级 1024 科学计数法

    思路 1.尝试失败:一开始想打算把结果直接存在一个字符串中,后来发现当指数大于0的时候还需要分别考虑两种情况,工程量巨大,尝试失败,于是借鉴了其他大佬思路,写出了ac代码 2.ac思路:首先取指数的绝 ...

  4. MySQL数据库-数据表(下)

    分析:给 reader 表添加数据. INSERT INTO:插入数据,插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错: 语法:INSERT INTO table_name VALUES ...

  5. 如何评判一个企业是否需要实施erp系统?

    一个企业是否需要实施ERP系统很大程度上取决于其规模.这里需要向提问者说明的一点是:很多企业上ERP,并不会用得到MRP,ERP是企业资源计划,不是制造业企业专用,MRP也不是ERP必须,金融.保险之 ...

  6. MatrixOne从入门到实践03——部署MatrixOne

    MatrixOne从入门到实践--部署MatrixOne 前两章节我们简单介绍了MatrixOne和源码编译了MatrixOne.本章节将使用不同的部署方式,来部署MatrixOne的服务. 注意:不 ...

  7. Golang可能会踩的58个坑之初级篇

    前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷.如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到. 如果花时间学习官方 ...

  8. C++ 队列!还是要从 STL 中的说起……

    1. 前言 队列和栈一样,都是受限的数据结构. 队列遵循先进先出的存储原则,类似于一根水管,水从一端进入,再从另一端出去.进入的一端称为队尾,出去的一端称为队头. 队列有 2 个常规操作: 入队:进入 ...

  9. 利用Hutool-(Java工具类)实现验证码校验

    目录 Hutool工具类介绍 Hutool实现验证码生成 测试验证码生成 其他样式的验证码 第一篇是纯利用现有JDK提供的绘图类(ImageIO)类制作,这个过程比较复杂且需要了解ImageIO类. ...

  10. 集合元素的遍历操作,使用迭代器Iterator接口

    1.内部的方法:hasNext() 和 next() 推荐的方式: //hasNext():判断是否还有下一个元素while(iterator.hasNext()){ //next():①指针下移 ② ...