2226. Maximum Candies Allocated to K Children

2024-02-27 00:08

本文主要是介绍2226. Maximum Candies Allocated to K Children,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        //题目和砍木头和875 koko吃香蕉一样
        //画图画图画图 重要的事情说三遍
        //             max NO. candies/pile  
        //candies    1  2  3  4  5  6  7  8
        
        //   5            5  2  1  1  1  0  0  0
        //   8            8  4  2  2  1  1  1  1
        //   6            6  3  2  1  1  1  0  0
        
    //Tot Candies  19  9  5  4  3  2  1  1
        
        // 1. 二分法来处理这个问题, 以 每个篮子里多少个糖果 来二分。
        //     因为通过max No. candies/pile 可以计算出可以分出来多少篮子糖果。
        //2. 二分的时候把 通过Mid计算出来的篮子数目 和 K个小朋友来对比
        //     如果比K大,说明份的分数太多了。增加每个篮子里的糖果数目
        //     如果比K小,说明分的分数太少。减少每个篮子里的糖果数目
        // 3. 退出的时候,因为题目要求maximum number of candies each child can get
        //      说明尽量每个篮子分的糖果多一些
        //      比如假设每个篮子分7,8 个糖果分出来的篮子糖果一样,并且K也是1。那就得每个篮子分8个。、

class Solution {
public:
    long long calcNumPiles(int numCandiesPerPile, vector<int>& candies){
        long long ret = 0;
        
        for(int candy: candies)
            ret += candy / numCandiesPerPile;
        
        return ret;
    }
    
    int maximumCandies(vector<int>& candies, long long k) {

        
        int start = 1;
        int maxCandiesPerPile = 0;
        
        for(int candy: candies){
            if(candy > maxCandiesPerPile)
                maxCandiesPerPile = candy;
        }
        
        int end = maxCandiesPerPile;
        
        while(start + 1 < end) {
            int mid = start + (end - start) / 2;
            
            long long numPiles = calcNumPiles(mid, candies);
            
            if(numPiles >= k)
                start = mid;
            else
                end = mid;
        }
        
        if(calcNumPiles(end, candies) >= k)
            return end;
        if(calcNumPiles(start, candies) >= k)
            return start;
        
        return 0;
    }
};

这篇关于2226. Maximum Candies Allocated to K Children的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/750603

相关文章

leetcode#628. Maximum Product of Three Numbers

题目 Given an integer array, find three numbers whose product is maximum and output the maximum product. Example 1: Input: [1,2,3]Output: 6 Example 2: Input: [1,2,3,4]Output: 24 Note: The lengt

HDU 1297 Children’s Queue

题目: http://acm.hdu.edu.cn/showproblem.php?pid=1297 题解: D[n]表示有n个人时,满足排队要求的个数。 分类讨论: 1.第n个人为男生时,满足排队要求的个数等于D[n-1]. 2.第n个人为女生时,第n-1个必为女生,才满足要求。 此处还要进行一次分类: a.前n-2个满足排队要求时,个数为D[n-2]. b.前n-2个不满足

Maximum likelihood function maximizes what thing?

最大似然函数(Maximum Likelihood Function)最大化的是数据在给定参数下出现的概率。具体来说,它最大化的是似然函数(Likelihood Function),即给定参数 ( \theta ) 下观测数据的概率。在统计学中,似然函数 ( L(\theta) ) 通常定义为所有独立观测数据点概率的乘积,对于参数 ( \theta ) 的函数。 对于一组独立同分布的观测数据

ORA-24067: exceeded maximum number of subscribers for queue ADMIN.SMS_MT_QUEUE

临时处理办法: delete from aq$_ss_MT_tab_D;delete from aq$_ss_MT_tab_g;delete from aq$_ss_MT_tab_h;delete from aq$_ss_MT_tab_i;delete from aq$_ss_MT_tab_p;delete from aq$_ss_MT_tab_s;delete from aq$

[LeetCode] 239. Sliding Window Maximum

题:https://leetcode.com/problems/sliding-window-maximum/description/ 题目 Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You

vue3 el-menu 菜单Maximum recursive updates exceeded 报错

vue3 用el-menu实现管理后台左侧菜单,报Uncaught (in promise) Maximum recursive updates exceeded in component <ElMenu>. This means you have a reactive effect that is mutating its own dependencies and thus recursivel

[置顶]LCM性质 + 组合数 - HDU 5407 CRB and Candies

CRB and Candies Problem's Link  Mean:  给定一个数n,求LCM(C(n,0),C(n,1),C(n,2)...C(n,n))的值,(n<=1e6). analyse: 很有趣的一道数论题! 看了下网上别人的做法,什么Kummer定理我还真没听说过,仔细研究一下那个鬼定理真是涨姿势了! 然而这题我并不是用Kummer那货搞的(w

jQuery 子元素选择器 find() 和 children()

在前面的文章中多次提到了 子元素 和 直接子元素,本篇文章来说明这两者的区别。 <div id="list"><div name="a"><div name="c">web前端</div><div name="d">梦之蓝</div></div><div name="b">web-7258</div></div> 上面的HTML代码中,通过name值给div命名 console.log($

浙大数据结构:01-复杂度2 Maximum Subsequence Sum

数据结构MOOC PTA习题 01-复杂度2 Maximum Subsequence Sum #include <iostream>using namespace std;const int M = 100005;int a[M];int main(){int k;cin >> k;int f = 1;for (int i = 0; i < k; i++){cin >> a[i

Maximum Index

Given an array arr[], find the maximum j – i such that arr[j] > arr[i] Given an array arr[], find the maximum j – i such that arr[j] > arr[i]. Examples: Input: {34, 8, 10, 3, 2, 80, 30, 33, 1}O