问题: 有n项活动申请使用同一个礼堂,每项活动有一个开始时间和一个截止时间。如果任何两个活动不能同时举行,问如何选择这些活动,从而使得被安排的活动数量达到最多。 解析: 如果我们选择开始时间最早的节目,得不到最优解 如果我们选择时间最短的节目,也无法得到最优解 可以用数学归纳法证明,我们的贪心策略应 ...
分类:
其他好文 时间:
2020-05-01 20:57:58
阅读次数:
70
介绍: 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与 ...
分类:
编程语言 时间:
2020-04-30 21:41:07
阅读次数:
75
/**乘船问题:有n个人,第i个人重量为wi。每艘船的最大载重量均为C,且最多只能乘两个人。用最少的船装载所有人。贪心策略:考虑最轻的人i,如果每个人都无法和他一起坐船(重量和超过C),则唯一的方案是每个人坐一艘否则,他应该选择能和他一起坐船的人中最重的一个j求需要船的数量 */ 思路:先把每艘船的 ...
分类:
其他好文 时间:
2020-04-27 13:43:49
阅读次数:
127
字典序最小问题:给一个定长为N的字符串S,构造一个字符串T,长度也为N。起初,T是一个空串,随后反复进行下列任意操作1. 从S的头部删除一个字符,加到T的尾部2. 从S的尾部删除一个字符,加到T的尾部目标是最后生成的字符串T的字典序尽可能小1≤N≤2000字符串S只包含大写英文字母输入:字符串S输出 ...
分类:
其他好文 时间:
2020-04-24 20:18:35
阅读次数:
81
分治策略 分治策略是一种解决问题的思路: 将问题分为若干更小规模的部分 通过解决每一个小规模问题,并将结果汇总得到原问题的解。 PS:递归问题则体现了分治策略。 优化问题和贪心策略 1.优化问题例子:找零兑换问题 让自动售货机每次找零给顾客最少数量硬币。 贪心策略解决:我们每次都试图解决问题尽量大的 ...
分类:
编程语言 时间:
2020-04-16 19:35:55
阅读次数:
70
OAO dijkstra算法在复杂度方面是十分优秀的,但是其最大弊端就是无法处理带负权的图 (因为是基于已经被更新过的距离源点的边必然已经达到了最短路的这个事实 来采取贪心策略来求得最短路 而有负权路存在时,这个基础不在成立。) 这个时候就要请出Bellman-Ford算法了 (正确性证明:http ...
分类:
编程语言 时间:
2020-04-14 20:30:25
阅读次数:
61
题目链接 http://bailian.openjudge.cn/practice/4137/ 这个题目原本以为选出前k大的数删除就可以得到正确结果,但是这种策略是错的,举一个反例:52376 2,如果取出7 6,得到523,显然还有更小的数 236。 正确的贪心策略是从左到右每次选取一个比后一位大 ...
分类:
其他好文 时间:
2020-04-01 11:16:40
阅读次数:
66
/** * 860. Lemonade Change * https://leetcode.com/problems/lemonade-change/description/ * */ class Solution { //使用贪心,策略是每次找钱选择大面额,尽量保留5元的 fun lemonade ...
分类:
其他好文 时间:
2020-03-25 01:52:04
阅读次数:
82
Codeforces 1312E. Array Shrinking 题意: 有一个序列,你可以选择一对相邻的数字$a_i=a_{i+1}$,然后将这两个数字换为$a_i+1$。 问最后最少能留下多少个数字。 思路: 似乎没有好的贪心策略,所以确定是dp应该没问题。 我们设$g(i,j)$表示在区间$ ...
分类:
其他好文 时间:
2020-03-10 11:52:27
阅读次数:
51
题目大意:给定 N 个点 M 条边的无向简单联通图,留下最多 K 条边,求剩下的点里面从 1 号顶点到其余各点最短路大小等于原先最短路大小的点最多怎么构造。 这个题贪心+dijkstra 我们可以在第一次跑 dij 时直接采用贪心策略,即:若当前答案集合的大小小于 K 且优先队列非空,则继续优先队列 ...
分类:
其他好文 时间:
2020-03-03 22:15:35
阅读次数:
68