生活随笔
收集整理的這篇文章主要介紹了
截取【二分】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
截取
題目描述
給你N段線的長度,現(xiàn)在要你從他們上面切下K段來(切下的不能合并),使得這K段長度相等,并且最大。如若求出的答案小于0.01,則認(rèn)為無解,輸出0.00。(所有非整數(shù)都精確到了兩位,輸出亦然)1<=N,K<=10000
輸入樣例
4 11
8.02
7.43
4.57
5.39
輸出樣例
2.00
解題思路:
兩位小數(shù)可以直接乘100用int longlong來計算,在(1…所有數(shù)加在一起)這一堆數(shù)中選一個總共可以分成k段并且最大的的數(shù)
#include<cstdio>
using namespace std
;
long long k
,l
,r
,mid
,a
[10100];
int n
;
float ans
;
bool pd(long long x
)
{long long z
=0;for (int i
=1;i
<=n
;i
++)z
+=(a
[i
]/x
);return z
>=k
;
}
int main()
{scanf("%d%ld",&n
,&k
);for (int i
=1;i
<=n
;i
++){scanf("%f",&ans
);a
[i
]=(long long)(ans
*100);r
+=a
[i
];}l
=1;if (k
>r
) r
=-1,l
=0;if (k
==r
) r
=0;while (l
<r
){mid
=(l
+r
+1)/2;if (pd(mid
)) l
=mid
;else r
=mid
-1;}ans
=(float)l
/100;printf("%.2f",ans
);
}
總結(jié)
以上是生活随笔為你收集整理的截取【二分】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。