贪心
文章平均质量分 61
neither_nor
这个作者很懒,什么都没留下…
展开
-
bzoj4567 [Scoi2016]背单词
这题的题意真是难于理解意思就是挨个放单词,放每个单词之前一定把这个单词的后缀都先放上去,每个单词的代价等于这个单词的位置减去上一个出现的这个单词的后缀的位置第一个条件是没用的,因为如果触发这个条件一定不是最优的然后嘛,我们把串反一下,建一颗trie,把除了根意外不是作为串的结尾的没用的点去掉,这样就变成了一颗树,问题转化为给树上每个点标号,每个点的标号大于其父亲的编号,每个点代价为他的原创 2016-05-10 13:42:24 · 2608 阅读 · 0 评论 -
BZOJ3709 [PA2014]Bohater
妈妈我终于把这题过了今天左边神犇突然问我这题,然后我突然发现这尼玛不是和wf2016 swap space一道题么然后交了一发还是没过然后BeyondW告诉我血量=0就算死了-_-然后就过了把算法和证明写了吧具体地,把怪物按照打完之后加血还是扣血分类,显然先打加血的后打扣血的,对于所有加血的怪,显然先打掉血少的对于所有掉血的怪,我们要先大加血多的证明:设原创 2016-10-28 08:37:28 · 830 阅读 · 0 评论 -
BZOJ4619 [Wf2016]Swap Space
把所有硬盘按照格完了之后是容量变大还是变小分成两类,先做变大的,后做变小的,变大的按原容量升序排序,变小的按新容量降序排序证明感性理解一下就好……#include#include#include#include#include#include#include#include#include#include#include#include#include#inclu原创 2016-09-21 13:03:36 · 855 阅读 · 0 评论 -
BZOJ3850 ZCC Loves Codefires
考虑a排在b前边的条件at*bv即at/av排序即可#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 100010原创 2016-10-31 10:59:38 · 484 阅读 · 0 评论 -
BZOJ4345 [POI2016]Korale
在病房里日题真是一种独特的体验……首先考虑求第一问,我们先把所有元素排序,我们用优先队列维护选数的集合,对每个集合维护集合里的元素的和v和最后一个元素(即最大的元素)lst,初始的时候我们把只包含最小元素的集合推入队列,那么我们取出一个队头元素之后,如果队头的lst不是最大的元素,我们只需要再向队列里推入当前集合插入lst+1后的集合以及先删除lst再插入lst+1的集合。如果lst是最大元素原创 2016-12-17 21:30:49 · 1165 阅读 · 2 评论 -
BZOJ1908 Pku2054 Color a Tree
网上搜BZOJ搜不到题解,搜PKU才能搜到-_-如果不考虑父亲必须比儿子靠前的话,那么染色序列一定是把所有点从大到小排序那么考虑父亲必须比儿子靠前,最大的点一定在其父亲被染后紧接着被染,因为否则我们可以将其与在其父亲后被染的点的染色顺序交换,答案一定更优我们确定了点x一定在点y被染之后紧接着被染,就相当于可以把点x和点y合并,使得点y的儿子都变成x的儿子,并且染x的时间和代价都加上了染原创 2016-12-28 20:13:44 · 749 阅读 · 0 评论 -
BZOJ4716 假摔
注意到k比较小,考虑用优先队列挨个算出前k小的得到第i小的之后向下和向右分别扩展一行一列即可不需要向上向右,因为向这两个方向扩展后的状态可以由一个比其的优的状态的向下或者向右扩展得到不过有两个鬼畜的地方……首先就是重载运算符里写?:多套几层就慢爆了……比if else慢了好几倍然后判重的时候在出优先队列的时候判(就是像dijkstra那样)比在入队列的时候判(就是像bfs那样)原创 2017-02-22 10:04:18 · 830 阅读 · 0 评论 -
BZOJ4813 [Cqoi2017]小Q的棋盘
找以起点为起点的一个最长链,最优一定是在最长链上不走回头路的,所以相当于最长链上的边代价是1,非最长链的边代价是2(因为要走回去),每付出一次代价就可以使访问到的点数+1,那么贪心即可#include#include#include#include#include#include#include#include#include#include#include#includ原创 2017-04-14 14:16:27 · 1172 阅读 · 0 评论 -
BZOJ4868 [Shoi2017]期末考试
YY一下的话感觉代价关于最晚出分时间是一个单峰函数三分最晚的出分时间然后贪心一下算代价就行如果A>B就只用B就行了要不然的话出分时间小于当前限制的都可以随便往后调直到到达限制,那么先尽量用A,调不到限制以内的再用B即可#include#include#include#include#include#include#include#include#include原创 2017-04-24 15:03:33 · 930 阅读 · 0 评论 -
BZOJ4922 Karp-de-Chant Number
这题真是tmd……让我想起了做bohater时候的绝望还好最后A了注意到每个括号序列相当于必须在当前前缀和>=x的情况下才能选,选完之后前缀和会+y那么就是bohater原题了,按那道题的顺序排序一下,然后DP即可,f[i][j]表示只用前i个串前缀和为0的最长长度答案为f[n][0]#include#include#include#include#include#i原创 2017-06-20 12:12:14 · 770 阅读 · 0 评论 -
BZOJ2151 种树
额,好久不刷BZ了,这个月一直在做TC和CF-_-这题,每次选当前最大的,然后把这个,这个左边和这个右边都删了,在这个位置加进来一个新数,值等于左边加右边减自己用链表+set维护即可跟生日礼物基本一样#include#include#include#include#include#include#include#include#include#include#i原创 2016-10-27 12:57:43 · 604 阅读 · 0 评论 -
BZOJ4245 [ONTAK2015]OR-XOR
额,想了半天上网看了题解,然后发现看错题了对数组做前缀和,然后按位贪心,如果有至少m个可行的位置当前为为0并且n的当前位为0,则当前为就为0,否则为1如果当前位为0的话,把所有当前位为1的设为不可行#include#include#include#include#include#include#include#include#include#include#incl原创 2016-09-27 18:28:04 · 574 阅读 · 0 评论 -
BZOJ2632 [neerc2011]Gcd guessing game
题目描述有些问题,只要你心里知道那个数就行了如果我们猜一个数,他告诉我们gcd不是1,那么相当于把n和你猜的数都除以gcd,他告诉你gcd是1。所以每次都告诉你是1是最坏的情况,这样当n以内的所有素数都作为询问的数的因数出现过,并且他告诉你gcd是1,从而n以内所有素数都被否认是答案的因数之后,我们就能确定答案是1问题变成了我们要给n以内的素数分组,使得每组的乘积小于等于n,问最小组数原创 2016-07-01 14:40:21 · 931 阅读 · 2 评论 -
BZOJ3252 攻略
因为是在树上,所以一定不会走反向边每次我们要在树上找一个到根路径上点权和最大的点,把答案加上这个和,然后把到根路径上所有点的点权设为0因为每个点的点权只会变为0一次,所以我们可以暴力做这个过程复杂度O((n+k)log n)#include#include#include#include#include#include#include#include#include原创 2016-07-13 16:51:22 · 734 阅读 · 0 评论 -
BZOJ4632 树的编码
观察发现对于树的每个子树都是一个相同的子问题,而每个问题其实就是哈夫曼编码,所以从底层开始每个点对他的所有儿子做一次哈夫曼即可。。父亲数组不是有序的,所以要记录一下编号然后排个序,就可以从后往前直接枚举了……#include#include#include#include#include#include#include#include#include#include#i原创 2016-07-09 09:11:07 · 585 阅读 · 0 评论 -
BZOJ1577 [Usaco2009 Feb]庙会捷运Fair Shuttle
按结束点排序,然后能塞多少塞多少即可#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 50010#define MAXM 2原创 2016-08-27 12:13:39 · 1471 阅读 · 0 评论 -
[POI2007]砝码Odw
看这数据范围就不太可DP的样子……考虑贪心首先注意到题目里有对于任意两个砝码其中一个是另一个质量整数倍的条件,所以砝码质量的种类不超过log INF考虑按质量从小到大把砝码往容器里放,这样的话所有的砝码和容器的质量都可以除以当前砝码质量然后下取整,砝码的质量都是整数倍,而对于容器,被下取整掉那部分是没有用的,因为已经没有比当前砝码更小的砝码了,所以那部分不可能被填满那么我们让当前砝码优原创 2016-08-22 07:46:05 · 332 阅读 · 0 评论 -
BZOJ2796 [Poi2012]Fibonacci Representation
贪心选最接近的,不要问我为什么-_-#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 1010#define MAXM 10原创 2016-08-22 18:39:48 · 828 阅读 · 0 评论 -
BZOJ1572 [Usaco2009 Open]工作安排Job
经典贪心……倒着做,这样结束时间变开始时间,每个时间取最大的即可#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 100010原创 2016-08-13 10:47:30 · 672 阅读 · 0 评论 -
BZOJ1119 [POI2009]SLO
一看题就一副置换群的样子……找到循环节,然后假设循环节长度为l,那么如果只在循环节内交换的话,一定每个数至少被计入代价一次,且一共要有2*(l-1)个数被计入答案,显然除了每个数至少一次外剩下的那l-2次都让最小的被计入答案最优但是这样对于这个循环节有可能不是最优,我们可以强行把一个不在循环节里的数拉进来,那么我们肯定要让所有数里最小的和循环节里最小的交换,把所有数里最小的拉进来,然后让所有数原创 2016-09-24 09:26:25 · 763 阅读 · 0 评论 -
BZOJ3426 Poi2013 Tower Defense Game
每次任选一个没被覆盖的点就行……具体证明看commonc的博客把……懒得写了……#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAX原创 2016-09-26 09:36:47 · 494 阅读 · 0 评论 -
BZOJ3425 Poi2013 Polarization
首先我们要证明这道题的一个性质:最优解一定具有如下形式:以树的某一个重心(可以是任意一个)为根,根的每一个子树里的所有边要么都指向根,要么都指向叶子引理:首先对于一棵树,我们把所有边的朝向反转,那么好的点对数不变,显然那么我们要证明树中一定存在一个点,我们称之为“犇点”,其满足以他为根,他的每一个子树里的所有边要么都指向根,要么都指向叶子假设不存在一个犇点,那么树中一定存在点对(x,y原创 2016-10-02 23:54:44 · 1155 阅读 · 0 评论