
贪心
jzq233jzq
这个作者很懒,什么都没留下…
展开
-
位运算贪心——BZOJ3668/Luogu2114 [Noi2014]起床困难综合症
题面:Luogu2114 BZOJ3668 既然都是一堆位运算了,我们按位来搞好了 一个很显然的贪心策略,高位选0对接下来选择更有利 所以我们直接按位从高到低贪心,计算这一位是0或1对答案的贡献,如果选1贡献大于0,选1,否则选0 大于m了选0 然后就好了。。。#include <cstdio>#include <algorithm>#include <cmath>#include <cstrin原创 2017-07-11 09:45:23 · 288 阅读 · 0 评论 -
Trie——BZOJ4567/Luogu3294 [Scoi2016]背单词
http://www.lydsy.com/JudgeOnline/problem.php?id=4567 https://www.luogu.org/problem/show?pid=3294 比较有趣的Trie题目之一(而且还挺新的) 我们可以按照各串的后缀建一棵Trie树,然后dfs序遍历出需要的点并标记(指那些位于各串结尾的节点,这些是有用的) 接着我们来考虑题目中的三种情况:如果存原创 2017-03-17 09:51:12 · 472 阅读 · 0 评论 -
贪心——Luogu1315 [NOIP2011]观光公交
https://www.luogu.org/problem/show?pid=1315 这是一题贪心题 首先在不放加速器的时候所有乘客的旅行时间总和是一定的。。。 因为每个站的出发时间一定是本站最后一位乘客上车时间(好吧不一定也有可能最后一名到了车还没到。。。) 所以应该是max(本站最后一位乘客上车时间,车到站时间)我们需要合理地安排加速器使所有乘客的旅行时间总和最小 那么这个加速器啊就原创 2017-03-27 20:51:07 · 401 阅读 · 0 评论 -
K短路——BZOJ1975/Luogu2483 [SDOI2010]魔法猪学院
http://www.lydsy.com/JudgeOnline/problem.php?id=1975 https://daniu.luogu.org/problem/show?pid=2483 首先我们要想到把这题转化成求k短路 这个怎么说呢。。。先看题目一句话 iPig 的总能量是有限的,所以最多能够转换的样本数一定是一个有限数既然要求每种转换方式都不相同,那就不可能是最短路然后贪原创 2017-03-31 09:31:12 · 1253 阅读 · 0 评论 -
贪心?DP?——BZOJ4582/Luogu3143 [USACO16OPEN]钻石收藏家Diamond Collector
题面处处都有 BZOJ4582 洛谷3143 这个已经不知道是贪心还是DP了。。。 首先对钻石进行排序(肯定的),然后记录状态:f[i]表示1~i区间内能够放到一个架子上的最大值,g[i]表示i~n区间内能够放到一个架子上的最大值 那么答案就是max(f[i]+g[i+1) 状态转移:f[i]=max(f[i-1],i-j+1) j表示能够和i放到一个架子上(差值小于等于k)的最远位置 g[i]同理原创 2017-04-20 09:08:39 · 468 阅读 · 0 评论 -
贪心——BZOJ4813/Luogu3698 [CQOI2017]小Q的棋盘
题面:BZOJ4813 Luogu3698一个很好想的贪心注意到这个图是一棵树,所以我们可以直接往树的深度最深处一直下去(注意是不回来了的),这样可以保证浪费是最少的 然后呢如果沿着这条链一直下去把n的步数用完了,那点数就是m+1(还有根节点) 如果没用完(这条路径到头了但是还有剩余步数),那就把剩余的步数全部除以2(一条路径走两次,为什么自己yy),加上原来答案就可以了 这样生成的答案它原创 2017-05-25 07:58:43 · 691 阅读 · 1 评论 -
贪心——Luogu2255 [USACO14JAN]记录奥林比克
题面:Luogu2255 显然是一个贪心嘛。。。慢慢分析摄像机台数=1这种情况,在当前时间我们只要找开始时间大于等于当前时间,结束时间尽量小的节目,这样才能留出更多时间拍后面的节目,所以排个序找一下就好了摄像机台数=2这种情况嘛。。。上面那个贪心就不对了,反例可以自己找一个(很好想的) 但是按照这个思想是可以的,我们其实可以找当前空闲的摄像机拍是吧 有几种情况:两台摄像机都在拍摄其他节目,这原创 2017-06-01 15:22:01 · 400 阅读 · 0 评论 -
树分块——BZOJ1086/Luogu2325 [SCOI2005]王室联邦
题面:BZOJ1086 Luogu2325 树分块模板题? 很懵逼我这个算不算树分块QAQ,暂且当它是吧到时候学树上莫队的时候再说 因为题目要求随便一组即可,所以我们可以考虑一下贪心 当子树大小超过B的时候单独作为一个省,子树根为省会(没算在那个省里),然后清空一下当前的子树大小 然后最后会剩下这么点城市,这些城市大小必定 < B(显然,否则也被分进另外一个省了) 于是把这一小部分分进相原创 2017-06-02 10:47:41 · 365 阅读 · 0 评论 -
后缀数组——BZOJ1031 [JSOI2007]字符加密Cipher
题面:BZOJ1031 题目意思就是让我们按照环排一个序,然后按排序后的顺序输出每个串的最后一个字符实际上这样的操作我们直接用后缀数组处理一下就好了具体就是把字符串复制一遍,求出SA数组之后按照SA数组的顺序贪心找下去然后判断输出即可因为SA数组其实也是一个排序编号的过程嘛。。。没什么可以多说的了。。。原创 2017-06-08 19:57:49 · 276 阅读 · 0 评论 -
贪心——Codeforces814D An overnight dance in discotheque
题面:cf814d 简要题意:有n个圈,之间的关系只有包含和完全分离两种,一个圆和它的的直接上层(包含它的最小那个)不能同时选(选是加上这个圆的面积,而不选是减去这个圆的面积,具体看cf的图),问最多能选到的圆的面积是多少大力贪心不虚啊,直接按照圆的大小排序,然后最大的选上,然后有奇数个上层(包含它的圆的个数)不选,偶数层的选上就好了 然后就AC了。。。 判断两圆是否包含:圆心距<两圆半径之和原创 2017-06-09 20:05:38 · 415 阅读 · 0 评论 -
后缀数组——Luogu2852 [USACO06DEC]牛奶模式Milk Patterns
题面:Luogu2852 题目就是让我们求在串s中出现至少k次的最长子串c 首先Height这个性质还是要用:lcp(x,y)=min(Height[rank[x]]~Height[rank[y]]) 不过这题的rank倒没多大用。。。 然后我们可以二分这个长度l(答案啦),然后利用这个性质贪心 这样就可以求出串s中lcp长度大于等于l的最大连续长度,与k比较一下就好了 就是跑得慢了点原创 2017-06-09 21:02:28 · 593 阅读 · 0 评论 -
ST表+堆——BZOJ2006/Luogu2048 [NOI2010]超级钢琴
题面:BZOJ2006 Luogu2048 权当ST表练手第一题 题面大意是求出前K大连续字段和(长度在l到r之间)的和 首先想到贪心的想法,我们要找到以i为开头的长度在l到r之间的最大连续字段和,然后丢到堆里面,每次都取最大的就是答案了 但是可能以i为开头的对答案有贡献的方案有很多种,所以我们还要进一步做,考虑把这段区间分开 我们首先记下原序列最大时结尾的下标,然后分开的时候直接下标左边原创 2017-06-12 09:54:40 · 448 阅读 · 0 评论 -
模拟退火——BZOJ2428/Luogu2503 [HAOI2006]均分数据
题面:Luogu2503 BZOJ2428 这题使用其他的常规算法不太现实,所以我们想一些奇怪的方法 模拟退火其实就可以(这题拿来入门了) 我们首先把每个数随机分组,然后随机地把一个数从原来的组里移到另一个组,计算答案,这个用退火搞一搞 也就是说如果新的答案比原来小,那就往新的答案去,否则随机地是否往新的答案去(当然随着时间推移往新的答案去概率越小,答案越稳定) 保证答案的话随个5000~原创 2017-06-22 08:04:05 · 364 阅读 · 0 评论 -
并查集——Codeforces744A Hongcow Builds A Nation
题面:cf744a div.1A题。。。难度还算简单吧 首先我们把目前所有连通块全部求出来 然后要求能连的边数最多,我们就把所有连通块连成最大团 不考虑原来边的数量m,每个连通块(最大团)的边数是(点数*(点数-1)/2) 然后考虑没有那个限制点(暂且这么说)的连通块,这些连通块两两可以连边 两两最多可以连的数量是(A的点数*B的点数) 最后考虑有限制点的连通块 因为这些连通块不能连原创 2017-07-06 21:01:02 · 308 阅读 · 0 评论 -
哈夫曼+堆——UOJ#130/Luogu2168 [NOI2015]荷马史诗
题面:Luogu2168 UOJ#130 追逐影子的人,自己就是影子。 ——荷马这题其实就是一个k叉Huffman树 所以我们用堆维护即可(像合并果子一样做就好了) 不过合并果子可以看作二叉Huffman,这里k叉 没关系,每次选k个合并就好了啊 但是如果(n-1)%(k-1)不等于0的话,那是不可能完全合并掉的 那也没关系,我们把少的用0补上,那就没有问题了 于是这么一道NOI的题就原创 2017-07-08 08:21:35 · 254 阅读 · 0 评论 -
贪心+线段树(优先队列)——51nod1191 消灭兔子
题面:51nod1191 哈哈哈……脑回路清奇 首先我们可以很快想到贪心,我们把兔子的血量从大到小排序,箭按照伤害值从小到大排序,那么我们就可以先做血量多的兔子,这样就可以为血量少的兔子留出箭了 因为数据范围有5W,所以可以想到RMQ 其实只要一个堆就可以了,我清(zhi)奇(zhang)地想到了线段树。。。#include <cstdio>#include <algorithm>#in原创 2017-09-08 13:38:25 · 285 阅读 · 0 评论