![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
文章平均质量分 66
to cling
Everything negative - pressure, challenges - is all an opportunity for me to rise.
展开
-
F. Equate Multisets(贪心)
给出两个长度都为n的数组a和b。每次可以对b中任意一个数进行两个操作中的一个(1)乘二(2)向下取整除二。操作顺序不限制,次数不限制,问经过一些操作后,b能否与a相同。原创 2022-07-15 00:19:33 · 861 阅读 · 2 评论 -
搬砖(贪心微扰 + 01背包)
第十三届蓝桥杯国赛有 nnn 个物品,第 iii 个物品的体积和价值分别为 vi,wiv_i, w_ivi,wi 。现在从这n个物品中取出一些物品,排成一行,使得每一个物品的价值大于等于其前面的物品 总体积。求取出的物品最大的价值。贪心微扰有点玄学呀。。可以先做做 《国王游戏》这道题目,了解一下 “微扰” 法分析题目的过程。首先,考虑到怎么保证某件物品其前面的物品总体积小于该物品的价值时,就会很没有头绪。然而,正难则反嘛。所以,可以先处理前面的物品,然后先处理后面的物品。之后就是选择物品。思考后可以原创 2022-07-14 16:56:23 · 128 阅读 · 0 评论 -
D. Permutation Restoration(贪心 + 双指针)
Educational Codeforces Round 131 (Rated for Div. 2)有一个长度为n的a数组和b数组, 两者满足 b[i]=⌊ia[i]⌋b[i] =\lfloor \frac {i}{a[i]} \rfloorb[i]=⌊a[i]i⌋ 的对应关系。现在给出b数组,求出任意一个满足该对应关系的a数组。但是,仅仅这样还不够 “贪”。...原创 2022-07-10 21:58:40 · 383 阅读 · 0 评论 -
B - Integers Shop(贪心 + 思维)
Hello 2022(codeforces)题意给出n条线段的左右端点的坐标[l,r][l,r][l,r],以及对应的价格c。 购买这n条线段后,会获得最少覆盖一次的点对应的数字,以及位于这些线段中间但未覆盖的这些数字。有一些原因 ,商店只出售前s(1≤s≤n)s(1 \leq s \leq n)s(1≤s≤n)条线段。你需要从前s段中选出若干条线段,使得获得的数字尽可能地多,同时尽量使总价格最小。思路记录三条线段:x1:左端点最小且价值最小的线段x_1: 左端点最小且价值最小的线段x1:左端点原创 2022-01-04 10:02:25 · 645 阅读 · 0 评论 -
合并果子(O(n)加强版)(桶排序+队列模拟堆+快读)
传送门这道题目让我受益匪浅啊!更让我认识到快读的 牛逼!!!acm生涯第一次用快读。整整快了一倍!!!Solution对于简单版本的解法,就是利用优先队列求解。(可以先学习一下简单版本)本题中由于数据量较大,需要O(n)的算法才可以。于是我们可以利用两个队列来模拟大根堆即可。如何模拟呢?首先利用桶排序对读入的数据排序,存入一个队列中(还有一个队列用来存放合并的数据)每次取出两个队列中最小的两个数,然后合并放入第二个队列第一个队列是有序的,第二个队列也一定是有序的嘛?是的,一定是有序的。原创 2022-04-30 17:27:37 · 466 阅读 · 0 评论 -
战棋小孩(二进制枚举+贪心)
2022牛客寒假算法基础集训营5 - C思路- 原数组:记录英雄得分(可以变换顺序)由于分数是累加的,也就是前缀和。对于前缀和的话,想要前缀和数组的每一个位置的数都尽量大,则需要将原数组按从大到小的顺序排列,这样就可以保证前缀和数组的每一个位置上的和对于原数组来说都是最大的。(若不理解,可以随意举例,手动求和)由于“礼遇”的存在,不能对原数组进行排序,需要二进制枚举所有满足条件的情况。注意:题目上说可以自由排列游戏顺序,说的是上面原数组对应的顺序,而不是题目中的p数组。CODE#inc原创 2022-02-20 22:04:43 · 510 阅读 · 0 评论 -
C. Meximum Array(贪心)
Codeforces Round #767 (Div. 2)题意Mihai 刚刚了解了 MEX 的概念,因为他非常喜欢它,所以他决定立即使用它。给定一个由 n 个非负整数组成的数组 a,Mihai 想要创建一个新数组 b,其形成方式如下:当 a 不为空:选择一个整数 k (1≤k≤∣a∣1≤k≤|a|1≤k≤∣a∣)。将数组 a 的前 k 个数字的 MEX 附加到数组 b 的末尾,并将它们从数组 a 中删除,移动 a 中剩余数字的位置。但是,由于 Mihai 喜欢大数组,同时他也希望数组原创 2022-01-24 00:28:08 · 564 阅读 · 0 评论 -
B. Not Sitting(思维)
Codeforces Round #766 (Div. 2)题意给出一个n × m 的矩阵,a可以在矩阵中随意标记k个格子。a可以在任何格子,b可以在任何不被标记的格子。a想离b尽量远,b想离a尽量近。问:在满足如上条件的情况下a,b之间的距离。距离:假设a在(x1,y1)(x_1, y_1)(x1,y1),b在(x2,y2)(x_2, y_2)(x2,y2)。距离d = ∣x1−x2∣+∣y1−y2∣|x_1 - x_2| + |y_1 - y_2|∣x1−x2∣+∣y1−y2∣。原创 2022-01-16 21:35:08 · 538 阅读 · 0 评论 -
187. 导弹防御系统
acwing187题意为了对抗附近恶意国家的威胁,R 国更新了他们的导弹防御系统。一套防御系统的导弹拦截高度要么一直 严格单调 上升要么一直 严格单调 下降。例如,一套系统先后拦截了高度为 3 和高度为 4 的两发导弹,那么接下来该系统就只能拦截高度大于 4 的导弹。给定即将袭来的一系列导弹的高度,请你求出至少需要多少套防御系统,就可以将它们全部击落。思路一般的最长递增子序列问题都是要么一直递增要么一直递减。而此题中是导弹可以一直上升,也可以一直下降,当然只能二者取一。且要求击落所有导弹,单纯原创 2022-01-10 22:11:00 · 333 阅读 · 0 评论 -
C - Magical Rearrangement
2021江苏省赛JSCPC题意给出数字0 ~ 9每一个的个数,用完所给的全部数字组成一个任意两个相邻数组都不相等的最小的数字。思路贪心,分类讨论。话说,贪心可真不容易,而且这题好多细节。从高位开始贪,每次选择一个使接下来有解的最小的数字。假设选取第 i 个数字作为当前所选的最优情况设:剩余的数字中数量最多的数字 j 的数量为 max;其他数字的数量为 rest。以下两种情况都是无解的情况。{i=jmax >= rest + 1i≠jmax原创 2022-01-07 18:37:00 · 2026 阅读 · 1 评论 -
D. Productive Meeting(贪心)
Codeforces Round #744 (Div. 3)题意给一个长度为n的数组a,求最多有几个组合(idxi,idxj),满足i≠j且1≤i,j≤n(idx_i , idx_j),满足 i \neq j且1\leq i, j \leq n(idxi,idxj),满足i=j且1≤i,j≤n。每个下标最多被使用aia_iai次。思路将所有非零的数值存入优先队列中,每次选则数量最大与次大的两个值进行交谈,每次交谈过后要及时进行出队入队操作。(我开始是这样想的:每次对最小的和最大的进行操作原创 2021-09-29 19:13:36 · 367 阅读 · 0 评论 -
C. Maximum Subrectangle(前缀和+思维)
传送门题意现在有一个矩阵,找出其中最大的子矩阵,保证子矩阵的元素和小于等于x。但是,这里的矩阵时通过两个行向量相乘给出,并不是直接给出的。输出一个整数,代表最大子矩阵的尺寸,也是就长乘宽。(1<= n, m <= 2000)思路简单推算可知,一个子矩阵的元素和,就等于他的长和宽在两个行向量中对应的前缀和相乘。也即sum = (a[i]+a[i+1]+...+a[j])*(b[ii]+b[ii+1]+...+b[jj])然后n2枚举出在相同长度的边情况下,最小的前缀和。最后分别枚举原创 2021-09-16 09:54:26 · 218 阅读 · 0 评论 -
D. Handshakes(贪心)
传送门题意:有n个去参加比赛。每次只能进去一个人,任意三个人可以组成一队。每进去一个人,这个人和当前未组队的人进行握手。现在给出n个人的握手次数,判断是否存在这样的一个关于n的排列(即n个人的进入顺序)。思路:先让尽可能多的人进去(即先把握手次数最多的人干掉,干掉0~maxn的人各一个)。完成上述步骤后,开始组队。让当前人数减3,判断是否存在这样的一个握手次数,若存在则继续进入,否则再减3。循环执行前面的过程,直到i < 0.总结:这是一道CF的D题,思路本身并不容易,并且看了解题思路之后,实原创 2021-09-08 22:34:40 · 103 阅读 · 0 评论 -
C. Sums of Digits(贪心)
传送门题意:给出一个n个数的数组(b)。数组(b)中的n个数据表示n个数据(n个数据存储于数组a)的十进制表示下的数字之和,并且数组a严格单调递增,数组a的最后一个数字a[n]最小。请求出满足以上条件的序列a。思路:贪心。要使最后一位最小,只要让数组a中的每一位数字尽量小即可。贪心思路:d = b[i] - b[i - 1]。若d > 0,则只需要让最低位尽可能地取9,余下的作为最高位。若d <= 0,则可以从最低位开始,让d 加上最低位,直到d > 0(从最低位第1位开始,假设d原创 2021-09-08 14:04:46 · 246 阅读 · 0 评论 -
C. Anya and Ghosts(贪心)
传送门题意:有m个鬼,每个鬼有一个到达的时间,每个鬼达到后持续1秒,然后离开。在每个鬼达到的时候需要至少r根蜡烛亮着,每根蜡烛亮t秒,点燃一根蜡烛需要1秒,熄灭后不能再使用。题解:蜡烛需要在鬼到达的前一秒点燃,并且是连续点燃,这样可以尽可能的利用蜡烛持续的时间(贪心)。开一个数组记录每个蜡烛的点燃时刻,每次需判断数组中未熄灭的数量,若不足r,则需要另外点燃。(很妙啊)#include<cstdio>#include<queue>#include<set>#原创 2021-09-07 18:33:52 · 119 阅读 · 0 评论 -
贪心+优先队列
题目Fishing Master HDU6709(2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛)Fishing Master HDU6709(2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛)传送门题意:有个人又钓鱼又煮鱼,钓鱼的时候不能煮鱼,但是煮鱼的时候可以钓鱼,问最少花多少时间。遇到问题:一般思考过程中会遇到一个问题,某次煮鱼剩余的时间如何利用(选择空闲着还是说选择钓鱼,尽管时间不够了)。正解:首先不可避免的需要先去钓鱼。同时煮鱼的过程中若有某段时间剩余,存入优先队原创 2021-08-28 01:07:30 · 147 阅读 · 0 评论