杭电 1551 Cable master 解题报告

    题目偶不说了,贴代码:

#include<iostream>
using namespace std;

int main()
{
    double temp,eps=1e-7;
    int i,sum,max,low,high,mid,ans,n,k,s[10001];
    while(cin>>n>>k && (n||k))
    {
        sum=max=0;
        for(i=0;i<n;i++)
        {
            cin>>temp;
            s[i]=(int)((temp+eps)*100);
            if(max<s[i])
                max=s[i];
        }

        ans=0;
        low=1;
        high=max;
        while(high>=low)
        {
            sum=0;
            mid=(low+high)/2;
            for(i=0;i<n;i++)
                sum+=s[i]/mid;
            if(sum>=k)
            {
                low=mid+1;
                if(ans<mid)
                    ans=mid;
            }
            else
                high=mid-1;
        }
        printf("%.2lf\n",ans*0.01);
    }
}

    实话说,之前Wrong了很多次,而且我不知道为什么。懒得研究~

posted @ 2013-02-16 20:27  SF-_-  阅读(164)  评论(0编辑  收藏  举报