贪心
“贪心”学习
CCCCDEV_CCCC
志在四方少年,羡慕南飞的雁
展开
-
1106 删数
就是一个简单的覆盖,如果找到了数i大于下一个数i+1那么就需要将这个数进行一个覆盖,一共覆盖k次。给定一个数字,对于任意位的数,删除k个数,当然这k个数是不确定的,需要我们用自己计算。贪心,贪心,我的思路就是从第一个数开始判断。贪心不难理解,只是很难证明。我们只需要计算最后的最小数。...原创 2022-07-31 22:25:59 · 90 阅读 · 0 评论 -
1094 纪念品分组(贪心)
很简单的贪心,首先进行一个排序,从小到大,然后一个头指针一个尾指针分别进行枚举,意思就是让大的和小进行分配在一起,如果比特定值小那么符合答案,不然不记录答案,直接跳过。但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。所以这个题就是一个很简答的贪心。...原创 2022-07-21 21:42:03 · 369 阅读 · 0 评论 -
1209 修理牛棚
1209 修建牛棚原创 2022-07-14 20:51:28 · 69 阅读 · 0 评论 -
1249 最大乘积
1249 最大乘积很明显这是一个贪心,把一个数字拆成和,使得他们的乘积最大我还以为是动态规划呢还有就是,高精度也是比较恶心的首先,先找找规律3…1 24…2 25…2 36…2 47…3 48…3 59…2 3 4有不有发现了啥子规律是的!每一个数都成小到大的排序了所以说,我们用贪心从2开始递增的累加,知道加到n,再用高精度撑起来就好了好简(bian)单(tai)#include<iostream>#include<cstdio>#include原创 2021-10-02 14:43:40 · 141 阅读 · 0 评论 -
1425 加工生产调度
1425 加工生产调度这个题和排队接水很像,贪心的问题都差不多首先先说一下,一本通的数据这个题可能炸了,因为这个题基本提交都是25分,但是代码并没有问题求一个物品的总时间最少,就是让机器空闲的时间尽量少这就是贪心也就是说,在A机器工作的时候,B机器是空闲,那么这样就会很浪费时间,如果B机器加工的时候,同样,A机器也得等待这个物品加工完成后再运作所以我们大胆得想象,要使机器空余得时间尽量小,就要把A机器上 加工时间最短得部件最先加工,这样让B机器能再最短空闲内开始加工,把B机器上加工时间最短的部件原创 2021-08-17 18:05:35 · 346 阅读 · 0 评论 -
1424 喷水装置
1424 喷水装置所关于贪心的问题,大部分都是这些类似于区间段重合问题也就是给定n个喷水的装置,再给定他们的喷水范围,问要想让所有的草坪都能被喷到水,最少需要多少水龙头?一个圆看上去可以利用的地方很多,实际上就只有中间的部分可以利用所以我们把圆转化成线段a[cnt].s =p -sqrt((rr)-(w/2.0)(w/2.0));a[cnt].e =p +sqrt((rr)-(w/2.0)(w/2.0));其中结构题记录转成线段后的起点和终点转化成线段就可以把题目转化成刚才做过的那道题了原创 2021-08-17 17:07:56 · 481 阅读 · 0 评论 -
1423 种树
1423 种树这个题和刚才那个很像很经典的一个问题贪心这个东西是一个思路,并不是一个结构每个房子看作一个点,然后给定几个操作,表示区间l和r这样我们就能找出几个问题思路就是说,种的树尽量的少,尽量让一棵树处于多个区间内,这样我们只需要在重叠区间种树就好了,重叠部分一定要排于区间尾部,因此,我们可以按照所有区间的结束位置进行其实说白了,就是很简单的模拟,贪心其实和模拟差不多#include<iostream>#include<cstdio>#include<a原创 2021-08-16 19:32:38 · 200 阅读 · 0 评论 -
1422 活动安排
1422 活动安排给定几个线段,问最多有几个线段不互相包含贪心但是我们贪什么?首先我们先把每个线段的终点进行一个排序然后我们按照这个顺序,比较每个线段的起点,如果起点比事先存入的大说明不冲突其实就是比较起点终点的问题,比较水的贪心#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<st原创 2021-08-16 18:35:30 · 124 阅读 · 0 评论 -
1983 车站分级
1983 车站分级#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;int n,m,ans=0,tot=0;int a[1002],dep[1002],in[1002],is[1002],head[1002],vis[1002][1002];typedef long lon原创 2021-08-06 20:53:17 · 75 阅读 · 0 评论 -
2168 荷马史诗
2168 荷马史诗这道题,听说过,因为这个题的名字挺奇葩,还是来练贪心不过这个题是一个哈夫曼树,比较恶心哈夫曼树我们也学过,哈夫曼树又叫最优二叉树我们按照思路就是求一个k进制的哈夫曼编码,平时我们说的哈夫曼为是2进制的,构造的方法很容易,本题也可以用相同的思想维护什么呢?转换题意,我们要维护的是最短的带权路径和哈夫曼树的高度,然后就是如何维护#include <cstdio>#include <cstring>#include <iostream>#in原创 2021-08-06 20:50:01 · 111 阅读 · 0 评论 -
2672 推销员
2672 推销员基础的一些算法,今天必须练完这个题的思路就是贪心,废话,我就是来练贪心的,嘿嘿还是得提炼题目一个人叫阿明,要给住在某街的N个用户推销,走一米会增加1的疲劳值第i家距离路口s[i]米,给第i家推销会增加a[i],全部推销完,按原来返回现在要依次向x用户推销,对于不同的x,阿明想知道最大疲劳值距离很烦人,那先不要管他,因为想要疲劳值最大,就得吧疲劳值从大到小排序这个时候,可以判断出,最大值可能是对于每一个x,只要加上前x大的疲劳值,再加上这些数中距离最远的并乘以2,也就是sum(原创 2021-08-06 20:30:06 · 311 阅读 · 1 评论 -
1080 国王游戏
1080 国王游戏首先,需要把题目进行提炼国王有n个大臣,他们每一个人,左右手各有一个数,ai,bi国王要他们站成一排(国王自己站在前面),随后给每个大臣奖赏对于每一个大臣如果他前面的人左手上的数乘积是A,他自己右手上的是bi,那么他会获得A/bi的奖赏,国王想要让获得奖赏最多的大臣获得的尽量少,请你安排一种顺序满足他的要求,并输出最多大臣最少获得奖赏记住一个思路,先考虑入局很小的情况,往往是有帮助的从而推出公式如果只有两个大臣,两个大臣的必要条件是,大臣2放在大臣1前面得到的最大值更小,那么我原创 2021-08-06 19:09:17 · 273 阅读 · 0 评论 -
Huffman树
Huaffman树Huffman树这个我们见过,不难理解,其实就是运用了贪心算法,有一点像大根堆这个知识点的例题其实我们早就见过,就是让你构造一颗二叉树(或者是k叉树),使的权值乘以距离最小点到根节点的长度叫做距离,权值使点自带的,这两者相乘一共要最小这肯定就是贪心那么我们如何构造?让权重小的尽量远离,让权重大的尽量靠近,这样就满足了其实就是使用一个队列,每次都升序排序,然后每次取最小的两个值求和放入队列中,直至队列为空为了方便理解,我把1090合并果子的题拿来进行理解#include&l原创 2021-05-03 19:30:48 · 104 阅读 · 0 评论 -
1007 独木桥
1007 独木桥模拟贪心,阅读理解类型的题看似复杂,但是代码很好想第一点,我们知道,两个士兵表面上是后退而过,但是实际上,是两个人穿过去了这个思路必须得明白所以我们在一次桥上求一求左边右边走哪一个时间长(或者时间短),左边是l-a+1,右边是接着走a然后对所有的方案进行取最大的那一组,为什么是最大的?因为我们想,最快的撤离了,但是最慢的没有撤离,所以我们得为慢一点的考虑#include<iostream>#include<cstdio>#include<algo原创 2021-04-26 23:10:59 · 88 阅读 · 0 评论 -
贪心
贪心贪心算法是一种不难也不难理解的算法贪心算法,每一次决策时采取当前意义下最优策略的算法,依据局部最优性,贪心的正确性需要进行证明,不能把贪心和DP搞混。1.微扰,贪心经常与排序在一起,微小的改变都会对整体改变2.范围缩扩,在局部范围内不会改变结果3.决策包容,什么意思,就是说其他可能的集合,也就是互相包容贪心的代码因题而异。这里为了方便理解,我把一道经典例题 合并果子 的代码拿过来,其实就是运用的优先级队列,每次取最大的两个#include<iostream>#include原创 2021-04-21 22:41:43 · 125 阅读 · 0 评论