贪心
算法
风萧萧兮易水寒丶
985软件工程本科在读
展开
-
Codeforces Linova and Kingdom(树形结构、贪心)
题目大意:给定一颗有n个节点的树,从中选出k个节点,从每个节点走到根节点1,路径中经过的未选中的节点的个数为kx,求一种选择方案,使总的kx之和最大。解题思路:求出每个节点对总值的贡献值,加入选择节点x,那么该节点的贡献值为x的深度减去该节点所有子树中节点的个数,因为选择节点的时候,必然使从树最深的地方开始的,当一个可以选择一个节点时,其子节点也必然已经被选择(贪心),选入该节点后,其子树...原创 2020-04-23 18:10:19 · 118 阅读 · 0 评论 -
tokitsukaze and soldier(优先队列、贪心)
解题思路:由题目可知要求一个集合,使集合大小满足元素的限制且元素之和最大。一个显然的贪心思想:在满足条件的前提下使得和最大。要求和最大,就可以使用堆来维护。因此,可以先按 ss 从大到小排序,维护一个小根堆,每插入新元素之前,将堆的大小调整至符合条件。再实时维护一个集合内元素的最大值即可。时间复杂度:O(nlogn)#include<bits/stdc++.h>using...原创 2020-03-26 21:41:00 · 213 阅读 · 0 评论 -
洛谷— P1250 种树
解题思路:想要种树种得少,就要一棵树在多个区间同时出现。所以,在重叠部分种尽可能多的树即可。然而重叠部分一定在区间的尾部。所以先对结束苇子进行排序,然后依次在区间的尾部从前往后种树直到满足要求,对于下一个区间,看看差多少树,就在结尾补多少。于是贪心的思想就很容易出来了:按结束位置排序对每个区间一次处理从前往后扫描区间,统计已有的树的个数若已选点超过要求个数,则continue...原创 2020-02-18 13:14:07 · 480 阅读 · 0 评论 -
洛谷—P1803 凌乱的yyy(经典的贪心问题)
在一个数轴上有n条线段,现要选取其中k条线段使得这k条线段两两没有重合部分,问最大的k为多少。最左边的线段放什么最好?显然放右端点最靠左的线段最好,从左向右放,右端点越小妨碍越少其他线段放置按右端点排序,贪心放置线段,即能放就放。#include<iostream>#include<algorithm>using namespace std;struct ...原创 2020-02-07 12:32:06 · 159 阅读 · 0 评论