洛谷P1577 切绳子题解

2022-11-13,,

洛谷P1577 切绳子题解

题目描述

有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的

绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数)。

输入输出格式

输入格式:

第一行两个整数N和K,接下来N行,描述了每条绳子的长度Li。

输出格式:

切割后每条绳子的最大长度。

输入输出样例

输入样例#1:

4 11
8.02
7.43
4.57
5.39

输出样例#1:

2.00

说明

对于100%的数据 0<Li<=100000.00 0<n<=10000 0<k<=10000

解析

  本来以为是一个浮点型二分查找的题目,于是很开心的做,分数一直不一样,直到发现是一道卡精度的题目.处理这种题目一般是先乘一个大数,最后再去除以这个大数,来确保误差很小.另一个就是审题,题目中明确说是直接舍掉小数点后两位的数字,那么就按照题目,而不是四舍五入.

 #include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#define D double
#define E 1e-5
#define Max 10005
D l,r,a[Max];
const D eps=E;
int n,k;
bool check(D x)
{
int ans=;
for(int i = ; i <= n ; ++ i)
ans += (int)a[i] / x;
if(ans >= k) return true;
else return false;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i = ; i <= n ; ++ i) scanf("%lf",&a[i]);
l=,r=100000.0;
while(r-l > eps) {
D mid=(l+r) / ;
if(check(mid)) l=mid;
else r=mid;
}
printf("%.2lf",l);
return ;
}

47分代码

 #include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#define D double
#define E 1e-4
#define Max 10005
D l,r,a[Max];
const D eps=E;
int n,k;
bool check(D x)
{
int ans=;
for(int i = ; i <= n ; ++ i)
ans += (int)a[i] / x;
if(ans >= k) return true;
else return false;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i = ; i <= n ; ++ i) scanf("%lf",&a[i]),a[i]*=;
l=,r=100000000.0;
while(r-l > eps) {
D mid=(l+r) / ;
if(check(mid)) l=mid;
else r=mid;
}
printf("%.2lf",l / );
return ;
}

85分代码

 #include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#define D double
#define E 1e-4
#define Max 10005
D l,r,a[Max];
const D eps=E;
int n,k;
bool check(D x)
{
int ans=;
for(int i = ; i <= n ; ++ i)
ans += (int)a[i] / x;
if(ans >= k) return true;
else return false;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i = ; i <= n ; ++ i) scanf("%lf",&a[i]),a[i]*=;
l=,r=100000000.0;
while(r-l > eps) {
D mid=(l+r) / ;
if(check(mid)) l=mid;
else r=mid;
}
l /= ;
if(l-0.0049 > ) l -= 0.0049;
printf("%.2lf",l);
return ;
}

100分代码

洛谷P1577 切绳子题解的相关教程结束。

《洛谷P1577 切绳子题解.doc》

下载本文的Word格式文档,以方便收藏与打印。