POJ-1064-Cable master

来源:互联网 发布:tscttp244pro标签软件 编辑:程序博客网 时间:2024/05/17 17:43

题目大意是说给你n个木棒,让你把他们切割成相同长度的k块,问每块最长长度是多少。

比较简单,就是二分答案,然后注意下精度,注意要用long long ~

代码:

#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn=10010;const double eps=1e-3;long long n,k,a[maxn];bool test(long long val){    if(val==0)return true;    long long cnt=0;    for(int i=0;i<n;i++)cnt+=a[i]/val;    if(cnt>=k)return true;    return false;}int main(){    while(scanf("%I64d%I64d",&n,&k)!=EOF)    {long long l=0,r=0;for(int i=0;i<n;i++){    double val;    scanf("%lf",&val);    a[i]=val*100;    r=max(r,a[i]);}long long ans=0;while(r>=l){    long long mid=(l+r)/2;    if(test(mid))    {ans=max(ans,mid);l=mid+1;    }    elser=mid-1;}printf("%.2lf\n",ans*1.0/100);    }    return 0;}


0 0
原创粉丝点击