• 洛谷 P2183 巧克力


    题目描述

    佳佳邀请了M个同学到家里玩。为了招待客人,她需要将巧克力分给她的好朋友们。她有N(1<=N<=5000)块巧克力,但是大小各不一样,第i块巧克力大小为为1*Xi(1<=i<=N,1<=Xi<=10000)

    为了公平,她需要让每人所分得的巧克力大小一样,而且为了礼貌,巧克力是一整块地分给客人。所以她需要将巧克力分成大小为S的M块,而且使得S最大。但她很忙还要照顾她的客人,所以就将任务交给你了,你需要求出S。

    输入输出格式

    输入格式:

    第一行,N,M

    下接N行为N块巧克力的大小。

    输出格式:

    仅有一行,为巧克力大小S。

    输入输出样例

    输入样例#1:
    Input.txt
       9 5
       1
       2
       3
       4
       5
       6
       7
       8
       9
    
    输出样例#1:
     Output.txt
       5
    传送门

    思路:二分查找

    #include<iostream>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    int n,f;
    double l,r,s;
    long double a[100001];
    const double pi=acos(-1.0);
    int js(long double x)
    {
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            if(ans>=f) return 0;
            else
            {
                ans+=floor(a[i]/x);
            }
        }
        if(ans<f) return 1;
        return 0;
    }
    int main()
    {
        cin>>n>>f;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            if(a[i]>r) r=a[i];
        }
        while(r-l>1e-5)
        {
            long double m=(l+r)/2;
            if(js(m)) r=m;
            else l=m;
        }
        printf("%d",(int)r);
    }


  • 相关阅读:
    网络流24题
    Songwriter CF1252-E(贪心)
    Card Collector AtCoder
    Game on a Tree Gym
    图书管理系统五
    bfs+状态压缩dp
    最短路径(邻接矩阵)
    求小于等于k长度的最大区间和
    链表实现队列C语言写法
    图书管理系统四
  • 原文地址:https://www.cnblogs.com/chen74123/p/7326296.html
Copyright © 2020-2023  润新知