首页 > 其他分享 >P1577 切绳子

P1577 切绳子

时间:2022-11-07 13:31:43浏览次数:57  
标签:cnt int double 绳子 P1577 mid 0.0001 check


​传送门​

P1577 切绳子_i++

思路:

用二分对答案mid进行枚举,若按照当前mid进行切割可获得的长度大于k,则l = mid+0.0001,否则r = mid-0.0001,最后用floor向下取整;

#include<bits/stdc++.h>
using namespace std;
#define ll long long
double a[1000010];
int n,m;
bool check(double x)
{
int cnt = 0;
for(int i = 1; i <= n; i++)
{
cnt += (a[i] / x);
}
return cnt >= m;
}
int main()
{
cin>>n>>m;
for(int i = 1; i <= n; i++)
{
cin>>a[i];
}
double l = 0.0,r = 100010.0;
while(l-r<0.0001)
{
double mid = (l+r)/2;
if(check(mid))
{
l = mid+0.0001;
}
else
{
r = mid-0.0001;
}
}
printf("%0.2lf\n",floor(l*100)*1.0/100.0);
}


标签:cnt,int,double,绳子,P1577,mid,0.0001,check
From: https://blog.51cto.com/u_15866543/5829162

相关文章

  • 剑指Offer-14-剪绳子/力扣-343-整数拆分
    对于一段绳子,第一刀下去可以将绳子分成i和n-i两段,其中i的取值范围为[1,n-1]dp[n]表示n可分成的最大乘积和,dp[n]=max(dp[n],max(i*n-i,i*f(n-i)))初始化:全部初始化为1i......
  • 剑指 Offer 14- I. 剪绳子
    一、题目:给你一根长度为n的绳子,请把绳子剪成整数长度的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]*k[1]*...*k[m-1]可能的最大乘......
  • 切绳子
    切绳子思路:运用二分查找,与木材加工题的思路相同。只是这个是针对浮点数的,多了将绳子长度转化为整形,最后输出再转回高精度。代码如下:#include<iostream>usingnames......
  • 切绳子
    直接二分答案,区间的l取0、r取长度和,然后check时对每条长度除以二分的值向下取整,判断是否不小于k就行了。基本是转换成整型进行二分,这里直接对实型进行二分,然后输出时稍微处......
  • 切绳子
    还是按照二分答案的模板写,因为是double类型的,会有精度错误,所以可以先将它们都乘100弄成整数,最后输出时再/100 ......