洛谷 P2183 巧克力

Posted 一蓑烟雨任生平

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 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<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 5010
using namespace std;
int v[MAXN];
int n,m,l,r,mid;
bool judge(){
    int sum=0;
    for(int i=1;i<=n;i++)    sum+=v[i]/mid;
    if(sum>=m)    return true;
    else return false;
} 
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%d",&v[i]),r=max(r,v[i]);
    l=1;
    while(l<=r){
        mid=(l+r)/2;
        if(judge())    l=mid+1;
        else r=mid-1;
    }
    cout<<l-1; 
}

 

 

以上是关于洛谷 P2183 巧克力的主要内容,如果未能解决你的问题,请参考以下文章

P2183 巧克力(二分答案)

洛谷 P2984 [USACO10FEB]给巧克力Chocolate Giving

洛谷——P2706 巧克力(未完成)

洛谷P2983 [USACO10FEB]购买巧克力Chocolate Buying

洛谷 P2984 [USACO10FEB]给巧克力Chocolate Giving

洛谷—— P2983 [USACO10FEB]购买巧克力Chocolate Buying