- 在数轴上给n个区间,要在数轴上放尽量少的点,使每个区间内都有点。先将所有区间按右端点从小到大排序,然后考虑对于每个区间,若其涵盖最后一个选的点,则不用放,否则在该区间右端点上放个点。(例)
- 哈夫曼树与哈夫曼编码:
给定若干个叶子节点点权,构造一棵k叉树,要所有叶子到根距离乘叶子点权之和最小,为哈夫曼树。
考虑贪心,我们先让所有叶子节点自己为一棵树,每次贪心的堆维护前k个(k为树的叉树)根节点权值最小的树,将它们合并成一棵树,连向同一个构造出的根节点,树的根节点取值就是他的子节点权值之和,最后形成的树就是哈夫曼树。
哈夫曼编码,参见荷马史诗,每两个点合并时将两个点的权值加到ans中即可去除第一问,第二问我们始终让权值相同的点中代表的树的最深深度最小的在前面即可 - 给定一个序列,有k个区间,问最多能放多少个区间在序列上使没有区间重叠。可以将这些区间按右端点升序排序,若当前区间不包括已经选到底最靠右的点,则选。(例)