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

  1. #include <iostream>
  2. using namespace std;
  3. int findmax(double [],int n);
  4. int main()
  5. {
  6. int asset,nshop;
  7. while(~scanf("%d%d",&asset,&nshop),asset,nshop)
  8. {
  9. int s[nshop-1][2],i;
  10. double rate[nshop-1];
  11. while (nshop--)
  12. {
  13. for (i = 0;i<nshop;i++)
  14. {
  15. scanf("%d%d",&s[nshop-1][0],&s[nshop-1][1]);
  16. rate[i] = (double)s[nshop-1][0]/s[nshop-1][1];
  17. }
  18. }
  19. int maxnum;
  20. double ans = 0.0;
  21. maxnum = findmax(rate,nshop-1);
  22. while (s[maxnum][1]<=asset)
  23. {
  24. ans = ans+s[maxnum][0];
  25. asset = asset-s[maxnum][1];
  26. rate[maxnum] = 0.0;
  27. maxnum = findmax(rate,nshop-1);
  28. }
  29. double r = s[maxnum][0]/(double)s[maxnum][1];
  30. ans+=r*asset;
  31. printf("%.3lf\n",ans);
  32. }
  33. return 0;
  34. }
  35. int findmax(double a[],int n)
  36. {
  37. int i,index = 0;
  38. double max = a[0];
  39. for (i = 0;i<n;i++)
  40. if (a[i]>max)
  41. {
  42. index = i;
  43. max = a[i];
  44. }
  45. return index;
  46. }

ac代码:

  1. #include <cstdio> //贪心
  2. #include <iostream>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. int N,M;
  7. struct node{
  8. int x,y;
  9. double s;
  10. }a[1000];
  11. double cmp(node aa,node bb){
  12. return aa.s>bb.s;
  13. }
  14. int main(){
  15. double sum,ans,w;
  16. int l,k;
  17. while(~scanf("%d %d",&M,&N)){
  18. if(M==-1&&N==-1) break;
  19. for(int i=0;i<N;i++){
  20. scanf("%d %d",&a[i].x,&a[i].y);
  21. a[i].s=(1.0*a[i].x/a[i].y);
  22. }
  23. sort(a,a+N,cmp);//c++内置的sort算法
  24. sum=0.0,ans=0.0;
  25. for(int i=0;i<N;i++){
  26. if(sum<=M){
  27. if(sum+a[i].y<=M){
  28. ans+=a[i].x;
  29. sum+=a[i].y;
  30. }
  31. else{
  32. ans+=a[i].s*(M-sum);
  33. sum=M;
  34. }
  35. }
  36. else {
  37. break;
  38. }
  39. }
  40. printf("%.3lf\n",ans);
  41. }
  42. return 0;
  43. }

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

  1. #include <iomanip> //这是一定要有的头文件
  2. //setprecision括号里的就是保留几位小数
  3. cout<<fixed<<setprecision(2);//最简写法
  4. //还有更复杂一些的写法,我不理解其意义
  5. cout<<setiosflags(ios::fixed)<<setprecision(2);
  6. //或者:
  7. cout.setf(ios::fixed);
  8. 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. 修改因python是3版本导致的yum问题

    问题原因: 系统自带的python出来的是2版本,但是因为某些原因,比如安装使用ElartAlert,导致执行python出来的是3版本. 此时执行yum相关的命令,会报错,具体错误信息如下: [ro ...

  2. 在 CentOS 8/RHEL 8 上安装和使用 Cockpit

    Cockpit 是一个基于 Web 的服务器管理工具,可用于 CentOS 和 RHEL 系统.最近发布的 CentOS 8 和 RHEL 8,其中 cockpit 是默认的服务器管理工具.它的软件包 ...

  3. WPF 的内部世界(Binding)

    目录 一.控件与布局 二.Binding基础 前言 "一桥飞架南北, 天堑变通途" 写于1956年,1957年武汉长江大桥建成, 称之为:一桥飞架南北,大堑变通途.它形象地描述武汉 ...

  4. 利用Java集合实现学生信息的”增删查“

    之前学了Java中的集合,打算写一个小程序来消化一下! 那么我们知道,集合相比数组的优点就是可以动态的增加元素,这对比数组来说,十分的便捷: 并且集合为我们封装好一些方法,可以更好的做一些数据操作! ...

  5. Period of an Infinite Binary Expansion 题解

    Solution 简单写一下思考过程,比较水的数论题 第一个答案几乎已经是可以背下来的,在此不再赘述 考虑我们已经知道了\((p,q)\),其中\((p \perp q) \wedge (q \per ...

  6. Kafka之概述

    Kafka之概述 一.消息队列内部实现原理 (1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消 ...

  7. ULID规范解读与实现原理

    前提 最近发现各个频道推荐了很多ULID相关文章,这里对ULID的规范文件进行解读,并且基于Java语言自行实现ULID,通过此实现过程展示ULID的底层原理. ULID出现的背景 ULID全称是Un ...

  8. 齐博x1如何取消某个标签的缓存时间

    标签默认会有缓存, 如果你要强制取消缓存时间的话, 可以加上下面的参数 time="-1"如下图所示 标签默认缓存时间是10分钟, 你也可以改成其它时间 比如 time=" ...

  9. 5.pygame快速入门-精灵和精灵组

    在之前案例中,图像加载.位置变化.绘制图像都需要编写代码分别处理 pygame提供了两个类简化开发步骤 pygame.sprite.Sprite #精灵,存储图像数据image和位置rect的对象 p ...

  10. 3.CBV视图之csrf补充

    CBV使用csrf装饰器关闭/开启 csrf验证,直接在函数上加装饰器无效的 #方法1 from django.views import View from django.views.decorato ...