HDOJFatmouse肥鼠交易//c++控制保留小数
贪心算法.我就不贴题了//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++控制保留小数的更多相关文章
- C++(五)— 控制保留小数位数
		1.C++中输出指定保留的小数位数. 这里还要注意,每次输出只要设置一次就行了,因为这两个的作用范围是后续对象,而不是仅对后一个对象起作用. #include<iostream> #inc ... 
- java中double变量保留小数问题
		(转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点 ... 
- C++ cout 如何保留小数输出
		参考 : http://upliu.net/how-cout-out-2-precision.html 大家都知道用 C 语言中 printf () 函数可以非常方便控制保留 几位小数输出 不过在 C ... 
- Javascript 智能输入数字且保留小数点后三位
		html: <input type="text" name="cprice" placeholder="最多保留小数点后三位" onk ... 
- C++ cout输出保留小数
		参考: http://www.cnblogs.com/wushuaiyi/p/4439361.html http://blog.csdn.net/edricbjtu/article/details/4 ... 
- 格式化 float 类型,保留小数点后1位
		""" 练习 : 小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点, 并用字符串格式化显示出'xx.x%',只保留小数点后1位: &qu ... 
- c#保留小数点后位数的方法
		Double dValue = 95.12345; ; string strValue = "95.12345"; string result = ""; re ... 
- codevs 2988 保留小数 2
		2988 保留小数 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 这个难度是吸引你点进来的.(其实难度挺 ... 
- 总结C#保留小数位数及百分号处理
		方法一: ); 方法二: Math.Round() 方法三: double dbdata = 0.55555; string str1 = dbdata.ToString("f2" ... 
- c++保留小数问题,如有不足或错误,欢迎指出
		#include<iostream> #include <iomanip> using namespace std; int main() { double a; cin> ... 
随机推荐
- Compass- 图形化界面客户端
			到MongoDB官网下载MongoDB Compass, 地址: https://www.mongodb.com/download-center/v2/compass?initial=true 如果是 ... 
- switch分支
			说明: 当表达式的值等于case中的常量,则会执行其中包含的语句块 break用于跳出循环,如果不写,则直接执行下一个常量的语句块,不再去判断表达式的值是否等于下一个case的常量(case穿透) 最 ... 
- 知识图谱实体对齐1:基于平移(translation)的方法
			1 导引 在知识图谱领域,最重要的任务之一就是实体对齐 [1](entity alignment, EA).实体对齐旨在从不同的知识图谱中识别出表示同一个现实对象的实体.如下图所示,知识图谱\(\ma ... 
- Codeforces Round #708 (Div. 2)
			A题被hack,A题很简单,其实题目没看懂,直接看样例做的. B题题意是以为懂了,但是样例一直看不懂. 经验:要两两相加能被一个m整除数组sum最少,利用他们的余数就可以设为a[x], x是余数,如果 ... 
- 关于javascript:void(0) 在不用的浏览器当中的表现
			原因在于三款浏览器,对三个属性的处理顺序不同. Chrome顺序:onclick -> href -> target IE和Firefox顺序:onclick -> target - ... 
- k8s 中的 service 如何找到绑定的 Pod 以及如何实现 Pod 负载均衡
			k8s 中的 service 如何找到绑定的 Pod 以及如何实现 Pod 负载均衡 前言 endpoint kube-proxy userspace 模式 iptables ipvs kernels ... 
- C语言之走迷宫深度和广度优先(利用堆栈和队列)
			完成以下迷宫 利用二维数组储存每一个数组里的值,若是不能走则为1,若是可行就是0,走过了就设为2. 一般是再复制一个数组,用来记录. 堆栈的思想就是将一个点的上下左右都遍历一遍,若可行进栈,跳出遍历, ... 
- dp优化 | 各种dp优化方式例题精选
			前言 本文选题都较为基础,仅用于展示优化方式,如果是要找题单而不是看基础概念,请忽略本文. 本文包含一些常见的dp优化("√"表示下文会进行展示,没"√"表示暂 ... 
- 一篇文章带你了解轻量级Web服务器——Nginx简单入门
			一篇文章带你了解轻量级Web服务器--Nginx简单入门 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件代理服务器 在本篇中我们会简单介绍Nginx的特点,安装,相关指令使用以及配置信 ... 
- 重新整理 .net core 实践篇 ———— dotnet-dump [外篇]
			前言 本文的上一篇为: https://www.cnblogs.com/aoximin/p/16861797.html 该文为dotnet-dump 和 procdump 的实战介绍一下. 正文 现在 ... 
