贪心策略---分配饼干

??保证每次操作都是局部最优的,并且最后得到的结果是全局最优

分配饼干

455. Assign Cookies (Easy)

Input: [1,2], [1,2,3]
Output: 2

Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2.
You have 3 cookies and their sizes are big enough to gratify all of the children,
You need to output 2.

题目描述:

??每个孩子都有一个满足度,每个饼干都有一个大小,只有饼干的大小大于等于一个孩子的满足度,该孩子才能获得满足。求解最多可以获得满足的孩子数量

思路分析:

???给一个孩子的饼干应当尽量小又能满足该孩子。这样大饼干就可以用来满足满足度较大的孩子。因为最小的孩子最容易得到满足,所以先满足最小的孩子。

证明:

???假设在某次选择中,贪心策略选择给当前满足度最小的孩子分配第 m 个饼干,第 m 个饼干为可以满足该孩子的最小饼干。假设存在一种最优策略,给该孩子分配第 n 个饼干,并且 m < n。我们可以发现,经过这一轮分配,贪心策略分配后剩下的饼干一定有一个比最优策略来得大。因此在后续的分配中,贪心策略一定能满足更多的孩子。也就是说不存在比贪心策略更优的策略,即贪心策略就是最优策略。

代码:

public int findContentChildren(int []g,int[]s){
    Arrays.sort(g);
    Arrays.sort(s);
    int gi=0,si=0;
    while(gi<g.length&&si<s.length){
        if(g[gi]<=s[si])
            gi++;
        si++;
    }
    return gi;
}

原文地址:https://www.cnblogs.com/yjxyy/p/11104894.html

时间: 2024-11-13 09:28:24

贪心策略---分配饼干的相关文章

【贪心策略】USACO 越野跑

问题 H: 越野跑[贪心策略] [题面] 为了能在下一次跑步比赛中有好的发挥,贝茜在一条山路上开始了她的训练.贝茜希望能在每次训练中跑得尽可能远,不过她也知道农场中的一条规定:奶牛独自进山的时间不得超过M秒(1< =M< =10,000,000). 整条山路被贝茜划分成T个长度相同的小段(1< = T< = 100,000),并且,贝茜用S_i表示第i个小段的路况.S_i为u,f,d这3个字母之一,它们分别表示 第i个小段是上坡.平地,或是下坡. 贝茜要花U秒(1< =U&l

一类区间选择问题的贪心策略

有一类问题在区间上的选择问题有如下特征: 1. 每个选择之间不交叉 2. 区间元素可以在某个选择中,也可以不在任何选择中 3. 最大化选择的个数 对于这类问题,我们可以考虑采取贪心策略.具体来说,对于区间从左到右考虑,每次发现一个可行的组合就选择,保证右区间尽可能小. Codechef CHEFPRAD [给a,b数组,数组内部元素相对位置不变,但ab之间的元素可以同时位移一个距离.每个元素可以匹配和它距离小于y的对面的点,求最大匹配] [观察到最优匹配方案一定是落在b数组某个元素的上边界上(如

LeetCode--Best Time to Buy and Sell Stock (贪心策略 or 动态规划)

Best Time to Buy and Sell Stock Total Accepted: 14044 Total Submissions: 45572My Submissions Say you have an array for which the ith element is the price of a given stock on day i. If you were only permitted to complete at most one transaction (ie, b

CF10E Greedy Change 判断硬币系统是否能用贪心策略

Billy investigates the question of applying greedy algorithm to different spheres of life. At the moment he is studying the application of greedy algorithm to the problem about change. There is an amount of n coins of different face values, and the c

到底什么叫贪心策略(内含几个经典贪心样例和三大图论算法)

昨天和前天写完了分治和dp,感觉收获真的挺大的,复习绝不是简单的重复记忆,而是将所学知识融会 贯通的过程,分析各种思想的异同,这些都是在平时学习和刷题的时候没有认真考虑的问题 好了,扯远了 今天分析一下到底什么叫贪心策略 怎么理解贪心:贪心在解决问题上是目光短浅的,仅仅根据当前的已知信息就做出选择,并且一旦做了选择,就不再更改 比如01背包问题,用贪心的话是不可解决的,因为贪心每次只顾眼前最优,即每次选择价值最大的,而忽 略了另外一个变量,物品的重量,如果还考虑物品的重量的话,那就是dp了 贪心

The - Modcrab——使用贪心策略

一.题目信息 The - Modcrab 简单翻译一下:Vova有生命值h1,每次攻击值为a1,每瓶药水恢复生命值c1;Modcrab有生命值h2,每次攻击值为a2.在每个关卡开始,Vova有两种选择,要么攻击怪兽Modcrab,要么喝一瓶药水(Modcrab的生命值允许超过h2),然后,如果战斗没有结束,Modcrab会攻击Vova.战斗结束的标志是Vova(或Modcrab)的生命值降至0,或者更低. 注:1.选择喝药水,Modcrab也会攻击Vova.2.攻击是有先后顺序的 二.算法描述

哈夫曼编码--贪心策略

哈夫曼编码还是在暑假时候看的,那时候并没有看懂因为比较菜(虽然现在也是很菜的),在<趣学算法>一书中这个问题讲解十分到位,我这篇博客真的是难以望其项背,只能对其进行一点借鉴和摘抄吧 哈夫曼编码是一棵树,权值越大的节点越靠近树根,越小的节点就越远离树根,从他的定义来看,首先想到的应该是贪心策略吧,没错就是贪心算法 虽然说是贪心算法,但是还要知道它 的实现方式啊,他的贪心策略是:每次从树的集合中取出没有双亲且权值最小的两棵树作为左右子树,并合并他们 步骤 : 1 :确定合适的数据结构(要知道他的左

浅谈贪心策略——相邻交换

浅谈贪心策略——相邻交换 题解主要写贪心的考虑方法:相邻交换法. 我们在平时的贪心题几乎都可以正确的贪心方法. 主要思想 设交换前对答案的贡献为x,交换后对答案的贡献为y l  若x>y则不交换 l  若x<y则需交换 l  若x==y则不交换(交换反而增加时间复杂度) 作为题目,需要建立数学模型设置未知数表示x和y得到不等式从而得出排序的关键字. 例题:皇后游戏(Luogu OJ P2123) 网址: https://www.luogu.org/problemnew/show/P2123 题

背包问题(贪心策略)

原创 给定n种物品和一个背包.物品i的重量是Wi,其价值为Vi,背包的容量为C.应如何选择装入背包的物品, 使得装入背包中物品的总价值最大?物品时可以拆分的,比如可以将物品的三分之一放入背包. 使用优先放入[价值/重量]最大的物品的贪心策略解题. 1 import java.util.Scanner; 2 class sack{ //背包类 3 private double c; //背包容量 4 private double n; //物品个数 5 private double w[]; //