随笔分类 -  实用算法——贪心

摘要:这道题的贪心好迷啊~我们对于两个过程进行单独贪心,然后再翻转一个,把这两个拼起来.先说一下单独贪心,单独贪心的话就是用一个堆,每次取出最小的,并且把这个最小的加上他单次的,再放进去.这样,我们得到的结果,是对于某些洗衣机,不停地洗,然后把这些洗衣机的时间,混在一起,排个序,由于对于每个洗衣机,如果被 阅读全文
posted @ 2018-03-22 17:22 TS_Hugh 阅读(664) 评论(0) 推荐(0)
摘要:堆对于stl priority_queue ,我们自己定义的类自己重载<,对于非自定义类我们默认大根堆,如若改成小根堆则写成std::priority<int,vector<int>,greator<int> >。时间复杂度除了pop push是O(log)外都是O(1)。当然手打会比stl快不少, 阅读全文
posted @ 2017-09-26 20:41 TS_Hugh 阅读(260) 评论(0) 推荐(0)
摘要:biubiu~~~ 这道题,考场上上来就dp然后发现怎么优化也不行.............最后发现是贪心............. 正解:带反悔的贪心,原理是,假设我们现在得到了取i个的最优解那么我们取i+1个的时候要么是新取一个要么把原来取过的点取反(间隙与所选)。我们把所有点从大到小选,这个过 阅读全文
posted @ 2017-08-07 21:49 TS_Hugh 阅读(348) 评论(1) 推荐(0)
摘要:这个题应该是很容易想到贪心的,只要可是怎么贪才是科学的呢?我们分析一下题干,对于每个边只能一进一出因此,对于树上的一棵子树,我们只要一进子树就必须遍历完,因此我们只能进行一遍 dfs() 然后我们发现 dfs() 一遍的时间是一定的,然后见每个妹子的时间就在这个时间轴上,分析完了,我们说一下要贪什么 阅读全文
posted @ 2017-08-01 11:44 TS_Hugh 阅读(189) 评论(0) 推荐(0)
摘要:这个东西考试的时候一眼以为状压就压炸了考试又了一下午.....最后我打出来发现后几个点10min都过不去,我大概算了一下,可能是吧.......最后一脸懵逼的我去怂了正解,我们发现只要确定了顺子就可以贪心了,所谓贪心就是在扔相同数码牌的基础上从四带二(对),四带二,三带二,三带一,开始贪心,我们的二 阅读全文
posted @ 2017-07-30 21:19 TS_Hugh 阅读(325) 评论(0) 推荐(0)
摘要:我们先把简单的不能搞死,具题意可证:每个蓄水长的管辖区域一定是连续的。证明:既然我们已经能了那么我们就可以说如果这个区间不是连续的那我们取出这个区间中间阻隔开的那一段,那么对于这一整个区间来说水源不可能来自两边那么一定至少有一条直通蓄水厂的路连其上一点,那么对于连着的那个蓄水厂a,以及我们造成此区间 阅读全文
posted @ 2017-07-13 15:38 TS_Hugh 阅读(198) 评论(0) 推荐(0)
摘要://论全局变量的杀伤力....QAQ#include #include #include #include #include #define MAXN 100005 using namespace std; int f[MAXN]; struct Tree { int to,next; }c[MAXNson[MAXN]; int head[MAXN],t; inline void add(... 阅读全文
posted @ 2017-06-19 16:44 TS_Hugh 阅读(257) 评论(0) 推荐(0)
摘要:本人总觉得贪心不清真不是正解,可有的骚题他就是正解而且我还老碰上,所以说,有的时候是要感性理解一下或者证一下,贪心大佬..... 这个题看数据,dp太难,往贪心那边想一下吧..... 本题的做法是建树,从叶结点开始合并代价直到不行为止(证明:首先假设我们已经找到一个最优解但他不是从叶到根合并到死,那 阅读全文
posted @ 2017-06-17 10:25 TS_Hugh 阅读(297) 评论(0) 推荐(0)