luogu P1577 切绳子

题目描述

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

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

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1:

4 11
8.02
7.43
4.57
5.39

输出样例#1:

2.00二分答案+检验,卡精度,好恶心
#include<cstdio>
#include<cmath>

int k,n;
double len[10005];
bool Check(double x)
{
    int num=0;
    for(int i=1;i<=n;i++)
        num += (int)(len[i]/x);
    if(num>=k)return true;
    return false;
}
int main()
{
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
        scanf("%lf",len+i);
    double l=0,r=10000000;
    double ans;
    for(int i=1;i<=100;i++)
    {
        double mid=(l+r)/2;
        if(Check(mid)) l=mid;
        else r=mid;
    }
    printf("%.2f\n",floor(r*100)/100);
    return 0;
}
时间: 2024-08-06 15:56:16

luogu P1577 切绳子的相关文章

P1577 切绳子

P1577 切绳子 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位. 输入输出格式 输入格式: 第一行两个整数N和K,接下来N行,描述了每条绳子的长度Li. 输出格式: 切割后每条绳子的最大长度. 输入输出样例 输入样例#1: 4 11 8.02 7.43 4.57 5.39 输出样例#1: 2.00需要高精处理,不能while(l<=r),用for枚举100次高精就够了 1 #include<cstdio

洛谷—— P1577 切绳子

https://www.luogu.org/problemnew/show/P1577 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位. 输入输出格式 输入格式: 第一行两个整数N和K,接下来N行,描述了每条绳子的长度Li. 输出格式: 切割后每条绳子的最大长度. 输入输出样例 输入样例#1: 复制 4 11 8.02 7.43 4.57 5.39 输出样例#1: 复制 2.00 说明 对于100%的数据 0

P1577 切绳子(二分)

思路:先来分析一下数据范围,是1e4个数据,但是,是double类型,结果不超过0.01那么在绳子最大的情况下,单纯的找正确答案暴力的话就是1e7的时间复杂度,再乘上1e4的数据,这样肯定不行.那么很容易想到二分,在找答案时使用二分的话就可以让时间复杂度下降到log(1e7)这是一个比较小的值,起码不超过128,这样,我们的时间复杂度就降了下来了. 检验函数,就是单纯的假设答案x,去除以每个绳子看看能得到最后有几段sum, 如果sum>=k则说明,是可行的.至于是不是最后答案,这要交给二分模板.

洛谷1577 1297切绳子(二分答案)

题目描述 Wonderland居民决定举行一届地区性程序设计大赛.仲裁委员会志愿负责这次赛事并且保证会组织一次有史以来最公正的比赛.为此,所有参赛者的电脑和网络中心会以星状网络连接,也就是说,对每个参赛者,组委会会用一根长度一定的网线将他的计算机与中心连接,使得他们到网络中心的距离相等. 为了买网线,组委会与当地的网络公司联系,要向他们购买一定数目的等长网线,这些网线要尽可能的长,使得组织者可以让选手们彼此远离. 于是公司指派管理网线事务的负责人解决此事.负责人清楚地知道仓库里每根网线的长度(精

二分求解 切绳子 (浮点数易出现精度问题)

Cable master Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 28644   Accepted: 6076 Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The Judging Committee has volunteered and has promised to

luogu P1714 切蛋糕 |单调队列

题目描述 今天是小Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大,但小Z最多又只能吃M小块(M≤N)的蛋糕. 吃东西自然就不想思考了,于是小Z把这个任务扔给了学OI的你,请你帮他从这N小块中找出连续的k块蛋糕(k≤M),使得其上的幸运值最大. 输入格式 输入文件cake.in的第一行是两个整数N,M.分别代表共有N小块蛋糕,小Z最多只能吃M小块. 第二行用空格隔开的N个整

推荐题目

二分 P2678 跳石头 P2440 木材加工 P1873 砍树 P1577 切绳子 P1824 进击的奶牛 P1316 丢瓶盖 UVA1555 Garland P1257 平面上的最接近点对 P1429 平面最近点对(加强版)(未完成) P1182 数列分段"Section II" P1281 书的复制(二分做法和上题一样,只是输出值变成了输出划分方式) 递推 P2386 放苹果 P1025 数的划分 DP&&MS P1091 合唱队形 P1140 相似基因 P144

基础算法总结

位运算 算术位运算 包括:按位与(&).按位或(|).按位异或(^).按位取反(~).按位左移(<<).按位右移(>>) 1 &(and) 对两个数进行操作,然后返回一个新的数,这个数的每个位都需要两个输入数的(同一位)都为1时才为1 举个例子: 1 1 1 1 1 0 0 0 1 1 1 0 =0 0 1 1 1 0 2 |(or) 比较两个数,然后返回一个新的数,这个数的每一位设置1的条件是两个输入数的同一位都不为0(即任意一个为1,或都为1) 举个例子: 1

算法91----切绳子

不能一.题目:切绳子 有n根绳子,第i根绳子长度为Li,现在需要M根等长的绳子,你可以对n根绳子进行任意裁剪(不能拼接),计算出这m根绳子最长的长度是多少. 输入:第一行2个正整数N,M,表示N根原始的绳子,和最终需要M根绳子数 第二行包含N 个整数,第i个整数Li表示第i根绳子的长度 其中,1≤N.M≤100000,0 <Li<1000000000 输出一个数字,表示裁剪后最长的长度,保留两位小数. 输入: 3 4 3 5 4 输出: 2.5 二.思路: 在绳子长度中进行二分查找最长的长度,