当前位置: 首页 > 知识库问答 >
问题:

将B个奶酪蛋糕分给N个班级,使每块蛋糕的学生数量最小化

傅志用
2023-03-14

共有1个答案

况繁
2023-03-14

应用二分搜索找到最小数量的学生/蛋糕。以下限'L'为1,上限'U'为任何给定班级的最大学生人数。让'mid'表示当前的学生/蛋糕,其中mid=(L+U)/2,那么,

计算每个中间值所需的蛋糕数量,

如果req<=蛋糕总数u=mid-1,则l=mid+1。应用二分搜索。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
ll n,b;cin>>n>>b;
ll arr[n],ans=0;
for(ll i=0;i<n;i++){cin>>arr[i];ans=max(ans,arr[i]);}

if(n>b)cout<<"-1";
else if(n==b)cout<<ans;
else   // binary search to find minimum students/cake
{
    ll l=1,r=ans,mid;  // mid represents current number of students/cake
    while(l<=r)
    {
        mid=(l+r)/2;
        ll ct=0;
        for(ll i=0;i<n;i++)
        {
            ct+=(arr[i]+mid-1)/mid;
        }

        if(ct<=b)
        {
            ans=min(ans,mid);
            r=mid-1;
        }
        else
            l=mid+1;
    }
    cout<<ans;
}

  return 0;
}
 类似资料:
  • 问题内容: 我只是想知道:有了Java 8,并有可能在接口中添加实现(有点像Scala特质),是否有可能像在Scala中那样实现蛋糕模式? 如果是,有人可以提供代码段吗? 问题答案: 从其他答案中得到启发,我想到了以下(粗糙的)类层次结构,该层次结构类似于Scala中的蛋糕模式: 以上代码自2013年1月9日起在Java 8上编译。 因此,可以的Java 8做cake- 喜欢 的图案? 是。 它像

  • 本文向大家介绍一共有九块蛋糕,但要装在四个盒子里,而且每个盒子里至少要装三块蛋糕,请问你要怎么做?相关面试题,主要包含被问及一共有九块蛋糕,但要装在四个盒子里,而且每个盒子里至少要装三块蛋糕,请问你要怎么做?时的应答技巧和注意事项,需要的朋友参考一下 前三个盒子每个盒子装3块蛋糕,第四个盒子把已经装好蛋糕的前三个盒子装进去。

  • 本文向大家介绍你来回答一下这个问题,一共有九块蛋糕,但要装在四个盒子里,而且每个盒子里至少要装三块蛋糕?相关面试题,主要包含被问及你来回答一下这个问题,一共有九块蛋糕,但要装在四个盒子里,而且每个盒子里至少要装三块蛋糕?时的应答技巧和注意事项,需要的朋友参考一下 先把9块蛋糕分别装在3个小盒子里,每个小盒子3块,然后把这3个小盒子装在一个大盒子里就可以

  • 本文向大家介绍使用css画个鸡蛋相关面试题,主要包含被问及使用css画个鸡蛋时的应答技巧和注意事项,需要的朋友参考一下 参考文章 )

  • 我想从db中获取学生列表,他们在每个班级中使用学生姓名获得最大人数。使用MySQL数据库。 我有如下表格,如学生、班级、成绩(不同年份的成绩) 表结构学生(student_id,student_name,class_id,地址),班级(class_id,class_name),结果(result_id,student_id,年份,分数) 我需要这样的清单

  • 我目前已经设置了下面的Auth组件,它工作得很好,但是我的客户现在希望能够为用户提供使用用户名或电子邮件地址登录的选项。 我当前的设置: 我如何才能更改此项,以便日志需要“电子邮件”或新字段“用户名”。 我会假设一个OR语句,但是下面的不工作: