Lights

二分...

2019第一篇qwqqq(希望明天出分不要死的太惨烈....

话说今天gg没给我们上课感觉真好....终于不用面对读遍ppt就过的窘境了23333

洛谷P1577 切绳子

题目描述

有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的

绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位。

输入格式:

第一行两个整数N和K,接下来N行,描述了每条绳子的长度Li。

输出格式:

切割后每条绳子的最大长度。

其实感觉这道题吧...对于小数点后两位比较坑....

具体思路qwq:从中间二分一个值,如果可以切k次的话,就左端加一,否则右端减一。

(其实我感觉学长讲的真的比gg好多了....我要是听gg讲估计是不会辽。。。

然后关于小数,查了一下,大家都建议先扩大一百倍,然后除一百(妙啊

#include<iostream>
#include<cstdio>

using namespace std;

int n,k;

double a[10010];

bool msort(int x)
{
    int cnt = 0;
    for(int i = 0; i < n; ++i){
        cnt += a[i]/x;
    }
    if(cnt>=k)return true;
    else return false;
}

int main()
{
    cin>>n>>k;
    for(int i = 0; i < n; ++i){
        cin>>a[i];
        a[i] *= 100;
    }
    int l = 0, r = 100000000;
    while(l <= r){
        int mid = (l + r) / 2;
        if(mid == 0)
            break;
        if(msort(mid))
            l = mid+1;
        else
            r = mid-1;
    }
    printf("%.2f
",1.0*r/100);
    return 0;
}

高分喷雾我要高分喷雾....

(数学不要看过程不要看。。。。

疯狂祈祷(哭了

原文地址:https://www.cnblogs.com/Grigory/p/10285322.html