背包相关问题。
1. 给出n 个物品,第i 个物体的重量为wi, 选择尽量多的物体,使得总重量不超过C.
按照物品重量从到小排序
2. 部分背包问题。有
按照“价值除以重量的值”排序
- 乘船问题。 有n 个人,第
i 个人的重量为wi,每艘船的最大载重量均为C, 且最多只能乘两个人。用最少地船装载所有人。
从两个极端考虑。
先按重量从小到大排序看看。
3.1先考虑最重的人。最重的人贪心选择能和他一起坐船中人的集合中最轻的人。
3.2 先考虑最轻的ren。 最轻的人贪心选择能和他一起坐船的人中最重的人。
双指针,一首一尾,遍历一遍即可。
4.区间相关问题。
4.1 选择不相交的区间。数轴上有
区间按照 b1≤b2≤b3排序。
4.1.1 a1>a2 选择区间1
4.1.2 a1≤a2 选择区间1
选择区间1 后,需要把所有和区间1相交的区间排除在外,需要记录上一个被选择的区间编号。从头到尾扫描一遍可完成贪心过程,得到正确结果。
4.2 区间选点问题。数轴上有n 个闭区间
把所有的区间按b 从小到大排序(b相同时,安装a从大到小排序),贪心策略选择第一个区间的最后一个点。
4.3 区间覆盖问题。数轴上有
先进行一次预处理。每个区间在[s,t] 外的部分都应该预先被切掉。
把各区间按照a从小到大排序。如果区间1的起点不是
- 哈夫曼编码问题
原理和性质:贪心策略和最优子结构
程序实现:
5.1 按照频率把所有的字符排序成表P,算法复杂度O(nlogn)。
5.2 新开辟一个节点队列Q, 其目的装放哈夫曼树合并的父节点。
5.3 从P或Q 选取两个频率最小的节点合并成一个父节点,放父节点放入Q中,由于后合并的父节点频率比先合并的频率大,因此Q内的元素是有序的。
5.4 重复5.3 直到P 和 Q为空。时间复杂度O(n)
444

被折叠的 条评论
为什么被折叠?



