洛谷 P1577 切繩子 實數二分,化實數為整數

2021-09-12 04:18:55 字數 752 閱讀 5759

實數二分,精度會缺失(如果直接用double二分,最後%.2lf輸出的時候會自動向上取整,可能改變了答案),解決辦法是先把每根繩子長度a[i]乘以100化為整數,再按整數的方法二分,最後輸出答案時再除以100即可。

注意在二分過程中要特判m=0的情況(否則在judge函式中會除以0導致re),m=0時直接break退出二分迴圈,記下答案ans=0。

#include

using namespace std;

const

int n=

1e4+10;

double x,ans;

int n,k,l,r,m,a[n]

;bool judge

(int m)

intmain()

l=0,r=

1e7;

while

(l<=r)

//n=1 k=10000 a[1]=1.00時,二分過程中會出現m=0的情況,在judge函式中會除以0導致re

//要防止re,則特判二分過程中m=0直接break,退出二分,記下答案ans=0if(

judge

(m))ans=

1.0*m,l=m+1;

//滿足if(judge(m)),記下ans

else r=m-1;

}printf

("%.2lf\n"

,ans/

100.0);

}return0;

}

洛谷 P1577 切繩子 二分

題目描述 有n條繩子,它們的長度分別為li。如果從它們中切割出k條長度相同的 繩子,這k條繩子每條最長能有多長?答案保留到小數點後2位。輸入輸出格式 輸入格式 第一行兩個整數n和k,接下來n行,描述了每條繩子的長度li。輸出格式 切割後每條繩子的最大長度。輸入輸出樣例 輸入樣例 1 4 11 8.0...

洛谷 P1577 切繩子

原題 有n條繩子,它們的長度分別為li。如果從它們中切割出k條長度相同的繩子,這k條繩子每條最長能有多長?答案保留到小數點後2位。輸入輸出格式 輸入格式 第一行兩個整數n和k,接下來n行,描述了每條繩子的長度li。輸出格式 切割後每條繩子的最大長度。輸入輸出樣例 輸入樣例 1 複製 4 11 8.0...

洛谷 P1577 切繩子

網線主管。我一直奇怪為什麼洛谷沒有網線主管,原來是有人抄得一模一樣。在洛谷上ac可以去交一下 不用改 首先看到這資料範圍,然後又是求最優解,首先就要考慮下貪心行不行 我嫌浮點數乘除麻煩,就讀入時乘上100,中間二分時r的範圍也要乘上100,最後輸出時除以100 因為c 自帶整除 偏向0取整,你可以試...