随笔分类 -  贪心

摘要:题意:有n个人,每个人有一件衣服需要洗,可以自己手洗花费t时间,也可以用洗衣机洗,但是洗衣机只有一台,即每个时刻最多只能有·一个人用洗衣机洗衣服。现在给你每个人最早可以开始洗衣服的时间,问当洗衣机的洗衣时间分别为1, 2....t的时候洗完所有衣服的最短时间。 思路:首先容易想到我们先把所有人按照洗 阅读全文
posted @ 2019-09-02 21:06 维和战艇机 阅读(518) 评论(0) 推荐(0)
摘要:题意:给你一个序列a, 问a[i] ^ (a[j] & a[k])的最大值,其中i < j < k。 思路:我们考虑对于每个a[i]求出它的最优解。因为是异或运算,所以我们从高位向低位枚举,如果这一位a[i]是0,我们就在a[i]的右边找两个位置让它们按位与起来这位是1。那么,我们贪心的保留可以通过 阅读全文
posted @ 2019-08-27 11:44 维和战艇机 阅读(450) 评论(0) 推荐(0)
摘要:题意:有n个任务,你的初始rating是m, 这n个任务有两个指标:完成这项任务所需的最低rating(a[i]),以及完成这项任务后rating的变化(可能为负)(b[i])。rating不能为负。F1:问是否存在一种任务完成顺序,始得所有任务都可以被完成,。F2:你可以任意选择一些任务去完成,问 阅读全文
posted @ 2019-08-15 23:51 维和战艇机 阅读(448) 评论(0) 推荐(0)
摘要:题意:给你一个字符串,问是否存在一个长度为m的子序列,子序列中对应字符的数目必须在一个范围内,问是否存在这样的字符串?如果存在,输出字典序最小的那个。 思路:贪心,先构造一个序列自动机,序列自动机指向在它后面离它最近的某个字符的位置。对于当前位置,从a开始枚举字符,如果答案串的下个位置填这个字符可以 阅读全文
posted @ 2019-07-22 22:05 维和战艇机 阅读(546) 评论(0) 推荐(0)
摘要:题意:有一个长为n的01串,两个人轮流操作,每个人可以把某个长度为m的区间变成相同颜色,谁在操作后整个串颜色相同就赢了。问最后是谁赢?(有可能平局) 思路:容易发现,如果第一个人不能一击必胜,那么他就会向平局发展。同理,如果第二个人不能在第一个人的所有第一步的可能走法之后都能一击必胜,那么他也会向平 阅读全文
posted @ 2019-07-19 17:02 维和战艇机 阅读(850) 评论(3) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/huanghongxun/article/details/49846927 在假设所有边都是最大值的情况下,如果第一个人能比第二个人先到,那就缩短这条边。 代码: 阅读全文
posted @ 2019-07-03 23:40 维和战艇机 阅读(268) 评论(0) 推荐(0)
摘要:题意:给你一张有向图,第i条边连接i号点和(i + 1) % n号点,问最多可以选择多少个点,使得这些点互相不可达。 思路:容易发现,如果某个边的集合点的数目大于等于2,那么就可以选出一个点,当然也可以出现多个1条边的集合相邻的情况(假设有m个),那么可以选择m / 2条边。 代码: 阅读全文
posted @ 2019-06-29 18:35 维和战艇机 阅读(184) 评论(0) 推荐(0)
摘要:题意及思路:https://www.cnblogs.com/liuzhanshan/p/6560499.html 这个做法的复杂度看似是O(n ^ 2),实际上均摊是O(n)的。我们考虑两种极端数据:一种是全是2,那么去重后实际上只有一个数。这样是O(n)的。另一种是所有的数都不一样,那么为了让最大 阅读全文
posted @ 2019-06-03 11:10 维和战艇机 阅读(261) 评论(0) 推荐(0)
摘要:题意:给你若干个数对,每个数对有两个属性,一个属性是权值,一个属性是位标志,假设这些数对的的权值和是sum,你可以选择一个二进制数s,与所有的数对的位标志按位与,如果按位与之后的位标志有奇数个1,那么权值的符号就会翻转(正变负,负变正),现在需要找到一个数s,使得进行这样的操作后sum的符号变了。 阅读全文
posted @ 2019-06-02 20:31 维和战艇机 阅读(439) 评论(0) 推荐(0)
摘要:题意及思路 说一下为什么按LCA深度从深到浅贪心是对的。我们可以直观感受一下,一条的路径会影响以这个lca为根的这颗树中的链,而深度越深,影响范围越小,所以先选影响范围小的路径。 阅读全文
posted @ 2019-04-02 10:56 维和战艇机 阅读(209) 评论(0) 推荐(0)
摘要:题意及博客 树链剖分分为2步,第一次求出深度,重儿子,第二次求出重链,用到了启发式的思想,即对于比较重的儿子,尽量去完整的维护它。类似于我们去合并两个堆,明显把小的堆逐个插入大的堆中会比大的往小的插更优,而这可以达到均摊O(logn)的效果。对于这个题,类似选重儿子, 我们每次尽量选择最长的路径,选 阅读全文
posted @ 2019-04-02 09:05 维和战艇机 阅读(150) 评论(0) 推荐(0)
摘要:题意:给你和一个数组(是一个排列)和一些二元组,二元组(x, y)表示如果x正好在y前面而且相邻,那么x和y可以交换位置,问最后一个元素最多可以向前移动多少步? 思路:对于每个数,有两种选择,一种是向后走,一种是向前走。假设我们决定让这个数向前走,那么把所有以它结尾的二元组的cnt加1。cnt代表的 阅读全文
posted @ 2019-03-13 00:12 维和战艇机 阅读(849) 评论(0) 推荐(1)