首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ACM之贪心算法

2.分发糖果(Leetcode题目) 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。...你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻的孩子中,评分高的孩子必须获得更多的糖果。 那么这样下来,老师至少需要准备多少颗糖果呢?...示例 2: 输入: [1,2,2] 输出: 4 解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。 第三个孩子只得到 1 颗糖果,这已满足上述两个条件。...算法流程: 先从左至右遍历学生成绩 ratings,按照以下规则给糖,并记录在 left 中: 先给所有学生 11 颗糖; 若 ratings_i>ratings_{i-1}ratings i ​...在贡献相同期望值(纸币数目)的情况下,我们希望多贡献点金额,这样就可以让纸币数更少,这就是一种贪心算法的解决思路。直觉告诉我们,这种处理方法就是最好的。

75920

蓝桥杯1

老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:  每个小朋友都把自己的糖果分一半给左手边的孩子。  一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 ...反复进行这个游戏,直到所有小朋友的糖果数都相同为止。  你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。 ...接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)  输出 要求程序输出一个整数,表示老师需要补发的糖果数。...他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。  小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买  10  颗糖。 ...输入 两个正整数,表示每种包装中糖的颗数(都不多于1000)  输出 一个正整数,表示最大不能买到的糖数  样例输入 4 7 样例输出 17 题解:事后知道这是一道可以用数论解决的题。

16110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    某操纵系统采用可变分区分配存储管理方法,用户区为512K且始址为0,用空闲分区表管理空闲分区。若分配是采用分配空闲区低地址部分的方案,且初始时用户区的512K空间空闲,对下述申请序列:申请300K,申

    采用最佳适应算法,完成了题目所给的系列申请及释放内存操作后,内存分配情况如图所示(用阴影表示空闲空间),空闲分区表如下: (3)如再申请100K,针对(1)和(2)各有什么结果?...再申请100K空间,由上述结果可知,采用首次适应算法后剩下的空闲分区能满足这一申请要求;而采用最佳适应算法后剩下的空闲分区不能满足这一申请要求。 买不到的数目(凑字数的忽略掉) 小明开了一家糖果店。...他别出心裁:把水果糖包成4颗一包和7颗一包的两种。 糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。 当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。...你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。 大于17的任何数字都可以用4和7组合出来。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。...输入格式 两个正整数 n,m,表示每种包装中糖的颗数。 输出格式 一个正整数,表示最大不能买到的糖数。 数据范围 2≤n,m≤1000, 保证数据一定有解。

    7400

    吃糖果(鸽笼原理) - HDU 1205

    若有n个笼子和n+1只鸽子,所有的鸽子都被关在鸽笼里,那么至少有一个笼子有至少2只鸽子。 ?...Input 第一行有一个整数T,接下来T组数据,每组数据占2行,第一行是一个整数N(0NN个数,表示N种糖果的数目Mi(0<Mi<=1000000)。...解题思路: 1、由于Gardon吃糖需要先吃一颗类型为X的,再吃一颗类型为Y的,对于任意类型的糖果,需要能够用其他糖果隔开。...2、把某种糖果看做隔板,如果某种糖果有n个,那么就有n块区域,至少需要n-1块其他种糖果才能使得所有隔板不挨在一块,也就是说能吃完这种糖果.至少需要其他种类糖果n-1块。...-1 //如11颗糖,其中一种有6颗,别的颜色有5颗,正好可以隔开这6颗糖 if ((sum - max_value + 1) >= max_value)

    49220

    【一天一大 lee】分发糖果 (难度:困难) - Day20201224

    20201224 题目: 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。...你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻的孩子中,评分高的孩子必须获得更多的糖果。 那么这样下来,老师至少需要准备多少颗糖果呢?...示例 2: 输入: [1,2,2] 输出: 4 解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。 第三个孩子只得到 1 颗糖果,这已满足上述两个条件。...抛砖引玉 相邻的孩子中,评分高的孩子必须获得更多的糖果: 先从左向右遍历: 如果某个元素大于前一个元素(右侧已遍历元素),保证其拿到的糖果比前一个元素多; 如果某个元素小于等于前一个元素,可以将其拿到的糖果置为...:如果遇到联系大于后一个元素的片段每次给的糖果也递增的 如果某个元素小于等于后一个元素,则给的糖果数归 1 // 评分 ratings = [1, 0, 2] // 糖果 left = [1, 1, 2

    42120

    Leetcode No.135 分发糖果(贪心)

    一、题目描述 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。...示例 2: 输入:[1,2,2] 输出:4 解释:你可以分别给这三个孩子分发 1、2、1 颗糖果。 第三个孩子只得到 1 颗糖果,这已满足上述两个条件。...二、解题思路 规则定义: 设学生 A 和学生 B 左右相邻,A 在 B 左边; 左规则: 当 ratingsB>ratingsA时,B 的糖比 A 的糖数量多。...右规则: 当 ratingsA>ratingsB时,A 的糖比 B 的糖数量多。 相邻的学生中,评分高的学生必须获得更多的糖果 等价于 所有学生满足左规则且满足右规则。...先确定右边评分大于左边的情况(也就是从前向后遍历) 此时局部最优:只要右边评分比左边大,右边的孩子就多一个糖果, 全局最优:相邻的孩子中,评分高的右孩子获得比左边孩子更多的糖果 局部最优可以推出全局最优

    30720

    Python|贪心的分发糖果

    问题描述 分发糖果(力扣135): 老师想给孩子们分发糖果,有N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。...你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻的孩子中,评分高的孩子必须获得更多的糖果。 那么这样下来,老师至少需要准备多少颗糖果呢?...通俗的讲,评分为2的孩子得到了1个,相邻的评分为3的孩子最少得到2个。要注意的是:满足规则且糖果总数最少的情况下,相邻的两个评分相同的孩子得到的糖果数量是不同的(比如上面的示例2)。...根据这个规则并且题目要求糖果总数最少,就可以利用贪心思想,在遍历过程中,每一步都尽量少给糖(给评分高的人一个满足规则,给两个也满足规则。...但最优的话就是只给一个),按照规则一定要加的时候才加一个,不违背规则的时候就一定不能加。 思路:为了更容易理清思路,可以兵分两路,从左到右和从右到左分别考虑。

    73210

    买不到的数目

    买不到的数目 小明开了一家糖果店。 他别出心裁:把水果糖包成4颗一包和7颗一包的两种。 糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。...当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。 你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。 大于17的任何数字都可以用4和7组合出来。...本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。 输入格式 两个正整数 n,m,表示每种包装中糖的颗数。 输出格式 一个正整数,表示最大不能买到的糖数。...两个数据分别是n,m,假定最小值是minn,最大值是maxx,那么就相当于从minn开始,不断往前走,每走到一个数,都要看看dp[i - n]或者dp[i - m]是否为true,如果是,则置true,...反之我们需要更新ans,ans就是指最大不能买的数目,也就是我们最后的输出,循环结束,便可直接输出ans.

    4200

    leetcode周赛226

    从相邻元素对还原数组 存在一个由 n 个不同元素组成的整数数组 nums ,但你已经记不清具体内容。好在你还记得 nums 中的每一对相邻元素。...作为元素对的数组nums 思路: 首先把每个数字与其相邻的数组存起来,题目说所有数字都不相同,那么每个点的度数最大为 。...你能在你最喜欢的那天吃到你最喜欢的糖果吗? 给你一个下标从 0 开始的正整数数组 candiesCount ,其中 candiesCount[i] 表示你拥有的第 i 类糖果的数目。...answer[i] 为 true 的条件是:在每天吃 不超过 dailyCapi 颗糖果的前提下,你可以在第 favoriteDayi 天吃到第 favoriteTypei 类糖果;否则 answer[...2- 每天你最多吃 4 颗糖果。即使第 0 天吃 4 颗糖果(类型 0),第 1 天吃 4 颗糖果(类型 0 和类型 1),你也没办法在第 2 天吃到类型 4 的糖果。

    34330

    2013年第四届CC++ A组蓝桥杯省赛真题

    你的任务是通过编程,找出断号的ID和重号的ID。 假设断号不可能发生在最大和最小号。 要求程序首先输入一个整数N(N<100)表示后面数据行数。 接着读入N行数据。...他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。...输入: 两个正整数,表示每种包装中糖的颗数(都不多于1000) 要求输出: 一个正整数,表示最大不能买到的糖数 不需要考虑无解的情况 例如: 用户输入: 4 7 程序应该输出: 17 再例如...我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60。 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。...如果无法分割,则输出 0 程序输入输出格式要求: 程序先读入两个整数 m n 用空格分割 (m,n<10) 表示表格的宽度和高度 接下来是n行,每行m个正整数,用空格分开。

    51920

    蓝桥杯CC++省赛:买不到的数目

    题目描述 小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。...当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。 你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。...输入: 两个正整数,表示每种包装中糖的颗数(都不多于1000) 要求输出: 一个正整数,表示最大不能买到的糖数 不需要考虑无解的情况 例如: 用户输入: 4 7 程序应该输出: 17 再例如...这里需要暴力遍历,其实这个性质就解决了遍历的上限。 我们需要三个函数,一个求最大公因数,一个求最小公倍数,一个检查是否不能由a和b表示。 我的疑惑 有没有懂哥解释一下为什么这两个性质是成立的?...n, i; cin >> m >> n; for (i = LCM(m, n) - 1; i >= m + n - 1; i--) if (Check(i, m, n)

    23320

    Java基础练习题

    案例一 试编写一个方法get,用于返回0到1000(包括0和1000)以内所有3的倍数之和。...试根据以上描述构造相关类及其属性和方法,并在合适的位置创建main方法,让一个司机去开一辆车。...他别出心裁:把水果糖包成4颗一包和7颗一包的两种。 糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。 当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。...你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。 大于17的任何数字都可以用4和7组合出来。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。...输入格式 两个正整数 n,m,表示每种包装中糖的颗数。 输出格式 一个正整数,表示最大不能买到的糖数。 数据范围 2≤n,m≤1000, 保证数据一定有解。

    4200

    LeetCode双周赛第70场,考察你的基本功

    打折购买糖果的最小开销 一家商店当中有n个糖果,商店规定每买两枚糖果就可以免费赠送一颗,赠送的糖果大小不能超过购买的这两颗的任意一颗。 现在我们要买下商店中所有的糖果,请问最少需要多少花费?...不难发现这是一道典型的贪心问题。 首先考虑对糖果进行排序,显然对于最大的两颗糖果是必须要花钱买的。而买下了最大的两颗糖果之后,我们一定是免费获得第三大小的糖果最优。...最简单的做法就是给原数组的第0位一个假定的值,然后求最大最小值计算gap。当然我们也可以不这么做,直接求解。为了方便理解, 我们可以简单做个图,以样例[3,-4,5,1,-2]为例。...K 样物品 给定一个 n x m的迷宫grid,迷宫内有墙和物品,grid[i][j] = 0,表示i, j位置为墙,大于0为商品,表示商品的价格。...我们无法移动到墙的位置,每次移动到商品可以拿取商品。 接着给定起点以及价格范围和一个整数k,我们只会考虑价格范围在lower和upper之间的商品,且最多只会拿取k个。

    27310

    LeetCode刷题——找不同和分发糖果

    请找出在 t 中被添加的字母。 示例 1: 输入:s = "abcd", t = "abcde" 输出:"e" 解释:'e' 是那个被添加的字母。...来源:力扣(LeetCode) 链接:力扣 n 个孩子站成一排。...给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果:    每个孩子至少分配到 1 个糖果。    相邻两个孩子评分更高的孩子会获得更多的糖果。...请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。 示例 1: 输入:ratings = [1,0,2] 输出:5 解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。...示例 2: 输入:ratings = [1,2,2] 输出:4 解释:你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。     第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。

    22130

    分发糖果(贪心)

    题目 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。...相邻的孩子中,评分高的孩子必须获得更多的糖果。 那么这样下来,老师至少需要准备多少颗糖果呢?...示例 1: 输入: [1,0,2] 输出: 5 解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。...示例 2: 输入: [1,2,2] 输出: 4 解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。 第三个孩子只得到 1 颗糖果,这已满足上述两个条件。...先从左到右遍历,将每个人得到糖果数记录到left数组中 1.将left用1填充(给所有学生一个糖果) 2.

    56710

    DFS算法及应用

    买瓜 小蓝正在一个瓜摊上买瓜。瓜摊上共有n个瓜,每个瓜的重量为A;小蓝刀功了得,他可以把任何瓜劈成完全等重的两份,不过每个瓜只能劈一刀。小蓝希望买到的瓜的重量的和恰好为m。...输入的第一行包含两个整数n,m,用一个空格分隔,分别表示瓜的个数和小蓝想买到的瓜的总重量。 第二行包含n个整数A,相邻整数之间使用一个空格分隔,分别表示每个瓜的重量。...,我们对小蓝所期望的总质量m和每个瓜的质量A乘以二,可以默认劈瓜的次数为n+1,如果递归搜索完成还没有得到m,就让ans等于-1。...例如:给定N个正整数,求出有多少个子集之和小于等于K。在搜索过程中当前选择的数字和已经超过K则不需要继续搜索。...定义两个n边形不同是指至少有—条边的长度在一个n边形中有使用而另一个n边形没有用到,如n边形(3,4,5,6)和(3,5,4,6)是两个相同的n边形,(3,4,5,6)和(4,5,6,7)是两个不相同的

    11310

    html+css+js实现打砖块小游戏

    他别出心裁:把水果糖包成4颗一包和7颗一包的两种。 糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。 当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。...你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。 大于17的任何数字都可以用4和7组合出来。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。...输入格式 两个正整数 n,m,表示每种包装中糖的颗数。 输出格式 一个正整数,表示最大不能买到的糖数。 数据范围 2≤n,m≤1000, 保证数据一定有解。...两个数据分别是n,m,假定最小值是minn,最大值是maxx,那么就相当于从minn开始,不断往前走,每走到一个数,都要看看dp[i - n]或者dp[i - m]是否为true,如果是,则置true,...反之我们需要更新ans,ans就是指最大不能买的数目,也就是我们最后的输出,循环结束,便可直接输出ans.

    6800

    ​LeetCode刷题实战135:分发糖果

    题意 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。...相邻的孩子中,评分高的孩子必须获得更多的糖果。 那么这样下来,老师至少需要准备多少颗糖果呢?...示例 2: 输入: [1,2,2] 输出: 4 解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。 第三个孩子只得到 1 颗糖果,这已满足上述两个条件。...时间复杂度和空间复杂度均是O(n),其中n为孩子的数量。...int[] candies = new int[n]; for (int i = 0; i n; i++) { candies[i] = 1; //每人至少发一颗糖

    31040
    领券