首页 > 其他分享 >POJ 1064 Cable master(浮点数二分 精度处理)

POJ 1064 Cable master(浮点数二分 精度处理)

时间:2022-10-03 01:12:18浏览次数:76  
标签:二分 Cable int 浮点数 1064 master POJ 精度

POJ 1064 Cable master(浮点数二分 精度处理)

题目:

​ 给出n棵木头,现在要求将木头裁成k个长度相同的小木头,请问这k个小木头的最大长度是多少。裁出来后不支持拼接。所有长度都是小数点后两位,要求输出答案也是小数点后两位。

思路:

​ 非常简单的一个二分。但是交一发之后发现会因为精度出现四舍五入的误差。又因为题目将所有数据都限制在后两位小数,所以我们可以将二分出来的结果*100后取整再/100,就是正确的精度了。

实现:

typedef long long ll;

int n, k;
double a[100005];

bool check(double x)
{
	ll cnt = 0;
	for(int i = 1; i <= n; i ++)
		cnt += floor(a[i] / x);
	return cnt >= k;
}

int main()
{
	scanf("%d%d", &n, &k);
	for(int i = 1; i <= n; i ++)
		scanf("%lf", &a[i]);

	double l = 0, r = 1000000.0;
	for(int i = 1; i <= 100; i ++)
	{
		double mid = (l + r) / 2.0;
		if(check(mid))	l = mid;
		else 	r = mid;
	}
	printf("%.2f\n", floor(l * 100) / 100);
}

标签:二分,Cable,int,浮点数,1064,master,POJ,精度
From: https://www.cnblogs.com/DM11/p/16749863.html

相关文章

  • 整数拓展,浮点数
    数据类型publicclassDemo03{publicstaticvoidmain(String[]args){inti=10;inti2=010;//八进制0inti3=0x10;//16进制0x0~9......
  • python 浮点数计算
    FloatingPointMath先贴个代码,有空再写:importdecimalimportfractions#2017096.82/10000print(f"2017096.82/10000=>{2017096.82/10000}")ori=frac......
  • python 数值类型-浮点数,复数。数值之间的运算
    1.浮点数1.1python中的浮点数和C语言一样有误差`0.1+0.20.300000000000000040.3==0.1+0.2False`那如何精确的计算浮点数?需要借助decimal(十进制的)模块`impor......
  • 浮点数
    #include<stdio.h>intmain(){ floatnum; scanf("%f",&num); intZ[258]={0},X[258]={0},PRINT[32]={0},P[258]={0}; intm,n,p,e=0,E=0; ......
  • IEEE浮点数向偶数舍
    CSAPP​ 向偶数舍入初看上去好像是个相当随意的目标——有什么理由偏向取偶数呢?为什么不始终把位于两个可表示的值中间的值都向上舍入呢?使用这种方法的一个问题就是很容......
  • T1024:保留3位小数的浮点数(信息学一本通C++)
     目录[题目描述]读入一个单精度浮点数,保留3位小数输出这个浮点数。[输入]只有一行,一个单精度浮点数。[输出]也只有一行,读入的单精度浮点数。[输入样例]12.34521......
  • Java基础04 浮点数拓展
    浮点数拓展publicclassdemo04{publicstaticvoidmain(String[]args){//浮点数拓展银行业务如何表示?钱//BigDeciaml数学工具类......
  • T1010: 计算分数的浮点数值(信息学一本通C++)
    [题目描述]两个整数a和b分别作为分子和分母,既分数a/b,求它的浮点数值(双精度浮点数,保留小数点后9位)。[输入]输入仅一行,包括两个整数a和b。[输出]输出也仅一行,分数......
  • IEEE浮点数
    在IEEE标准中,浮点数的32位这样分配:1位符号位(S),8位阶码(E),23位尾数(M)。其中正数的S=0,负数S=1设浮点数是X=a*2e,则E=e+127,M=X的小数部分。(其最终结果都用二进制数字表示)-......
  • 计算机是以IEEE 754标准定义的浮点数存储小数
    为什么负数要用补码表示?十进制转换二进制的方法相信大家都熟能生巧了,如果你说你还不知道,我觉得你还是太谦虚,可能你只是忘记了,即使你真的忘记了,不怕,贴心的小林在和你一起回......