随笔分类 - 其它-贪心
摘要:题目链接 "uojUNR3B" 题解 如果不输出方案,是有一个经典的三分做法的 但是要输出方案也是可以贪心的 设为节点到最深的儿子的距离 贪心选择大的即可 cpp include include include include include include inclu
阅读全文
摘要:题目链接 "BZOJ4868" 题解 最后的答案决定于最后一个公布的成绩 显然这个是答案关于这个时间点是呈凸单调的 三分一下这个时间点 时间点固定,在这个时间前的人都会产生不愉快度,在这个时间前的科目可以往后挪 我们只需贪心选择在这个时间后的科目按哪种方式往前挪 复杂度 cpp
阅读全文
摘要:题目链接 "BZOJ2079" 题解 题意就是黑白染色,要求相邻点存在不同颜色的点 显然从一个点出发,相邻点如果没有染色,染不同颜色,那么一个联通块一定会满足要求 证明:在树上,每个点父亲和它不同色 所以只需检查有无孤立的点 C++ include include include incl
阅读全文
摘要:题目链接 "uoj" 题解 以前看别人博客,在考场上用费用流做,一直以为这题是毒瘤网络流题 没想到竟然是贪心模拟题。。。 如果只有一个蔬菜呢?这就是一个经典的普及难度的贪心,正着推面临优先选择的困难,而逆着推由于不存在淘汰,所以可以贪心选最大的 首先的限制很容易处理,只需将每一个蔬菜分出一
阅读全文
摘要:题目链接 "BZOJ2529" 题解 要组成三角形,当且仅当最长边长度小于另两条边之和 我们就枚举最长边,另两条边当然是越大越好 我们将所有边排序,从小枚举并记录各个颜色的最长边 当枚举到当前边时,找到除了当前颜色外其它颜色最长边的最大值和次大值,检查一下加起来是否大于当前边长度 复杂度$O(nlo
阅读全文
摘要:题目链接 "BZOJ2217" 题解 如果只判定存不存在方案的话,我倒是想到可以将拆成两个,其中一个不能作为区间开头,线段树优化计算补集方案数 但是一看这道题要输出方案啊,,, 怎么办? 考虑如果凑不出,那一定可以凑出 我们就找到前缀和为的位置,如果没有,就找$
阅读全文
摘要:题目链接 "BZOJ2530" 题解 如果我们删去一对不连边的仍然存在的点的话,这对点肯定不同时在那个的团中,也就是说,每次删点至少删掉一个外点,至多删掉一个内点 那么我们要删掉团外的点最多使用个团内的点就可以了,剩下的至少$\frac{1}{
阅读全文
摘要:题目链接 "BZOJ2697" 题解 好水好水的贪心。。。 容易发现每种特技只表演两次,多表演没有意义,而且差距越长收益越大 然后就可以贪,最大的放两端,次大的往里,然后是第三大....... 证明很简单,假设将两个特技时间交换,那么会产生交换距离乘以的差值的贡献,显然就不优
阅读全文
摘要:题目链接 "BZOJ3523" 题解 简单的贪心题 优先与上一个不一样且数量最多的,如果有多个相同,则优先选择非结尾颜色 比较显然,但不知怎么证 C++ include include include include include include include define Redge(u) f
阅读全文
摘要:题目链接 "BZOJ4245" 题解 套路① 位运算当然要分位讨论,高位优先 考虑在下,如果该位为,则每一位都为 套路② 我们选m段异或和,转化为个前缀和的点,且其中有一个是 容易发现,该位结果要为0,则选取的前缀和该位都为 所以贪心查找所有该位为的,首先
阅读全文
摘要:题目链接 "BZOJ3709" 题解 贪心很显然 我们先干掉能回血的怪,当然按照升序顺序,因为打得越多血越多,大的尽量往后打 然后再干掉会扣血的怪,当然按照降序顺序,因为最后受的伤害一定,回的血也一定,先尽量回多的血以尽量承受住当前伤害 C++ include include in
阅读全文
摘要:题目链接 "BZOJ5322" 题解 意思就是使有序的排列尽量少 就是使相同的数尽量少 然后大力贪心即可 C++ include include include include include include define REP(i,n) for (register int i = 1; i (a
阅读全文
摘要:题目链接 "BZOJ4567" 题解 题意真是鬼畜= = 意思就是说我们应先将一个串的所有后缀都插入之后再插入这个串,产生代价为其到上一个后缀的距离 我们翻转一下串,转化为前缀,就可以建树来解决了 建好后单独取出单词节点,贪心先往子树小的节点编号即可 C++ include
阅读全文
摘要:题目链接 "BZOJ3573" 题解 题目又臭又长系列 题意:修改尽量少的点权,使得: ①同个节点的所有儿子点权相同 ②任意非叶节点权值等于其儿子权值之和 容易发现一旦任意一个点权值确定,整棵树权值就确定 一个比较简单的想法是枚举根节点权值 但我们可以通过计算出每个节点如若保留原值,根节点会是什么值
阅读全文
摘要:题目链接 "BZOJ3671" 题解 模拟题意生成矩阵贪心从小选择即可 每选择一个,就标记其左下右上矩阵 由于每次都是标记一个到边界的矩阵,所以一旦遇到标记过就直接退出即可,可以保证复杂度 还有就是空间和时间有点卡 C++ include include include include includ
阅读全文
摘要:题目链接 "BZOJ5158" 题解 题中所给的最长上升子序列其实就是一个限制条件 我们要构造出最大的以开头的最长下降子序列,就需要编号大的点的权值尽量小 相同时当然就没有贡献,所以我们不妨令权值为一个到的排列 考虑如何满足限制条件 对于所有的点,点与点之间一定
阅读全文
摘要:题目链接 "BZOJ1233" 题解 有一个贪心策略:同样的干草集合,底长小的一定不比底长大的矮 设表示形成的干草堆的最小底长,同时用记录此时的高度 那么 $$f[i] = min\{f[j]\} \quad [sum[j 1] sum[i 1] \ge f[j
阅读全文
摘要:题目链接 "BZOJ2535" 题解 航班之间的关系形成了一个拓扑图 而且航班若要合法,应尽量早出发 所以我们逆拓扑序选点,能在后面出发的尽量后面出发,不会使其它点变得更劣,容易知是正确的 第二问只需枚举航班,拓扑排序时忽视,最后无法选点时就是最早的时间 C++ include i
阅读全文
摘要:题目 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴。 ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号为1。由于菜肴之间口味搭配的问题, 某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如“i 号菜肴‘必须’
阅读全文