c++算法——贪心算法
文章平均质量分 68
贪心算法
小芒果_01
不积跬步无以至千里。
展开
-
P1809 过河问题【解析】
有一类贪心问题具有一定的迷惑性,大多数同学初步思考时会很快得到一种‘看上去很正确’的贪心策略,但是对于大部分贪心问题不能贸然得出结论。我们可以尝试构造一些反例推翻该策略。但是,即使该策略被推翻了,也不一定说明它完全错误,还有可能是在不同条件下贪心策略不同,此时需要分类讨论。因此,在解决贪心问题时,需要我们使用“构造方法、反例验证、打表观察、数学推导”等多种方式结合、多次尝试后,才能最终得到正确的方法。例如过河问题。原创 2023-06-19 15:50:08 · 1494 阅读 · 0 评论 -
删数问题(一本通1321)
个数字后剩下的数字按原左右次序将组成一个新的非负整数。一开始会想,先对数字进行排序,然后按序输出,会得出从小到大的数字序列。然后我们就会发现,这个结果只能通过三个测试点,只针对部分数据。需要改变一下策略:可以从前到后去删除数据,每一次删掉较大的。,寻找一种方案使得剩下的数字组成的新数最小。这里忽略了一个重点要求----->输出一个整数,最后剩下的最小数。第一行输入一个高精度的正整数。键盘输入一个高精度的正整数。,表示需要删除的数字个数。第二行输入一个正整数。原创 2023-02-21 16:15:09 · 409 阅读 · 0 评论 -
[NOIP2002 提高组] 均分纸牌(一本通1320)
题目中已知,总牌数一定是堆数N的倍数,所以求出平均数是本道题目的重点。3.得数为0则不需要移动纸牌,需要去掉这一步,否则步数会多(与题意不符)。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。2.使用每一堆牌数减去平均数,利用正负数来平衡每堆纸牌的数量。其他堆上取的纸牌,可以移到相邻左边或右边的堆上。可以在任一堆上取若干张纸牌,然后移动。共一行,即所有堆均达到相等时的最少移动次数。的堆上取的纸牌,只能移到编号为。堆上取的纸牌,只能移到编号为。,表示每堆纸牌初始时的纸牌数。原创 2023-02-21 15:00:15 · 283 阅读 · 3 评论 -
c++算法——贪心算法
所谓贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体的最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响到以前的状态,只与当前状态有关。所以对所采用的贪心策略一定要仔细分析其是否满足无后效性。原创 2023-02-16 19:02:15 · 329 阅读 · 0 评论 -
例6.1 排队接水(一本通)
输出文件有两行,第一行为一种平均时间最短的排队顺序;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。个人在一个水龙头前排队接水,假如每个人接水的时间为。重复时,按照输入顺序即可(sort 是可以的)个人排队的一种顺序,使得。个人的平均等待时间最小。原创 2023-02-16 18:59:58 · 158 阅读 · 0 评论