zoukankan      html  css  js  c++  java
  • 洛谷—— P2183 巧克力

    https://www.luogu.org/problemnew/show/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
    
     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 inline void read(int &x)
     5 {
     6     x=0; register char ch=getchar();;
     7     for(; ch>'9'||ch<'0'; ) ch=getchar();
     8     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
     9 }
    10 
    11 int n,m,a[5005];
    12 
    13 int L,R,Mid,ans;
    14 inline bool check(int x)
    15 {
    16     int cnt=0;
    17     for(int i=n; i; --i)
    18     {
    19         if(cnt>=m) return 1;
    20         cnt+=a[i]/x;
    21     }
    22     return false;
    23 }
    24 
    25 int Presist()
    26 {
    27     read(n),read(m);
    28     for(int i=1; i<=n; ++i) read(a[i]);
    29     std:: sort(a+1,a+n+1);
    30     for(R=a[n]; L<=R; )
    31     {
    32         Mid=L+R>>1;
    33         if(check(Mid))
    34         {
    35             ans=Mid;
    36             L=Mid+1;
    37         }
    38         else R=Mid-1;
    39     }
    40     printf("%d
    ",ans);
    41     return 0;
    42 }
    43 
    44 int Aptal=Presist();
    45 int main(int argc,char**argv){;}
  • 相关阅读:
    动态规划Dynamic Programming: Rod-Cutting Problem
    递归详解,全排列问题
    获取网站根目录Url
    oracle中操作表和权限
    mongo简单封装
    dapper的简单封装
    反射做字段更新日志
    nopcommerce +autofac +owin +webapi
    批处理命令执行程序
    MSMQ的简单使用
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7875077.html
Copyright © 2011-2022 走看看