算法-贪心
文章平均质量分 52
Maxwei_wzj
AFO
展开
-
(2021-8-15编写)同学出的一道题
题目大意: 有两根管子,每根管子里装着nnn个球,每个球上面写着000到999其中之一。每次想要取球,都可以任选一根管子,然后选择是从管子的头部或尾部取一个球。现在已知两根管子里球的顺序,要求找到一种合法的取球顺序,使得取出的球按取球的顺序排列后,得到的2n2n2n位数最大(先取的球是高位)。T≤100T\le 100T≤100组测试数据,每组测试数据n≤50n\le 50n≤50。做法: 本题需要用到贪心。像这种要求最后取出的数连起来最大的问题,想到可以每次贪心地取出可能情况下能取出的最大的数。如果原创 2021-08-15 18:14:47 · 242 阅读 · 0 评论 -
【BZOJ1029】建筑抢修(JSOI2007)-贪心+堆
测试地址:建筑抢修 做法:本题需要用到贪心+堆。 首先,不难想到(实际上可能因为我太菜了我觉得很难)先修截止时间小的。但是直接这样贪心可以找到反例,我们需要找到更好的做法。 考虑一个建筑,如果当前可以修,那就直接修,如果不行,如果这个建筑修理时间比我们目前选择的方案中最长的修理时间要短,就把这个建筑和修理时间最长的建筑互换,这样能使得方案不差的同时,目前的总时间最短。因此我们用一个堆来维护目...原创 2018-05-14 11:31:30 · 237 阅读 · 0 评论 -
【BZOJ5322】排序游戏(JXOI2018)-贪心
测试地址:排序游戏 做法:本题需要用到贪心。 首先,期望轮数显然就等于所有不同排列的种数,而可重排列的数目是有公式的,假设一共有nnn个元素,第iii种元素出现了didid_i次,那么有: ans=n!∏di!ans=n!∏di!ans=\frac{n!}{\prod d_i!} 注意到题目中最后生成的是一个包含n+mn+mn+m个元素的排列,那么分子就是固定的了,所以要使ansansan...原创 2018-05-24 16:36:57 · 544 阅读 · 0 评论 -
【BZOJ4408】神秘数(FJOI2016)-主席树+贪心
测试地址:神秘数 题目大意:定义一个集合的神秘数,为不能用其某个子集的和表示的正整数中最小的数,给定一个长为nnn的序列AAA,mmm次询问,每次询问某个区间的神秘数。n,m≤105,∑Ai≤109n,m≤105,∑Ai≤109n,m\le 10^5,\sum A_i\le 10^9。 做法:本题需要用到主席树+贪心。 考虑只有一个询问时要怎么做。首先,将AiAiA_i从小到大一个个加入集合...原创 2018-06-13 21:00:43 · 249 阅读 · 0 评论 -
【BZOJ1367】Sequence(Baltic2004)-贪心+左偏树
测试地址:Sequence 做法:本题需要用到贪心+左偏树。 在讲做法之前先说几句无关的话……NOI考完之后内心一片空虚,于是在颓废了约十天之后终于鼓起勇气写代码了,实在是可喜可贺…… 对于这一道题,题目要求的是递增序列,发现不太好求,于是根据要求的值的几何意义,如果我们把原数列做ai=ai−iai=ai−ia_i=a_i-i这样的变换,那么我们求出的不递减序列的最优解和原来的最优解相同。 ...原创 2018-08-04 09:47:02 · 234 阅读 · 0 评论 -
【BZOJ4484】最小表示(JSOI2015)-贪心+拓扑排序+bitset
测试地址:最小表示 做法:本题需要用到贪心+拓扑排序+bitset。 显然,如果一条边对连通性没有影响,那肯定是要删掉的。现在的问题就是如何找到这些边。 我们考虑在反拓扑序上求。考虑一个点的所有出边,对于每个指向的点,如果当前还没有找到从当前点到这个点的路径,那么当前的边就要保留,并用这个点能到达的点的集合更新当前点的集合,这个显然能用bitset做到O(nm32)O(nm32)O(\fra...原创 2018-08-20 20:07:48 · 218 阅读 · 0 评论 -
【ContestHunter0601】Genius ACM-贪心+倍增+归并排序
测试地址:Genius ACM做法: 本题需要用到贪心+倍增+归并排序。某机房大佬给的我他书上的一道神题…据说还是“基础算法”章节的例题…看来我NOIP退役已经是可以预见的了…首先可以大胆猜想(并小心证明)的是,计算校验值时所选的MMM对数,一定是最大的与最小的配对,次大的与次小的配对…以此类推。那么很明显的,一个区间如果被另一个区间包含,那么被包含的区间的校验值一定更小,这就是区间包含单调...原创 2018-10-01 11:41:17 · 550 阅读 · 0 评论 -
【BZOJ4297】Rozstaw szyn(PA2015)-贪心+树形DP
测试地址:Rozstaw szyn题目大意: 一棵nnn个节点的树有mmm个叶子节点,每个叶子节点有一个权值,要求给所有非叶子节点赋一个权值,使得树上每相邻两个节点的权值差的绝对值之和最小。做法: 本题需要用到贪心+树形DP。一个想法是,随便选一个非叶子节点为根,然后用某种贪心或者DP求出答案。这首先要要求,当每个子树内都达到最优时,整体的答案就最优。我们来分析一下这个问题。首先,对于儿子...原创 2018-09-27 20:55:29 · 299 阅读 · 0 评论 -
【BZOJ1178】会议中心(APIO2009)-贪心+倍增+set
测试地址:会议中心 做法:本题需要用到贪心+倍增+set。 如果这题单纯只求最多的线段数,相信大家都会贪心求了,但是鉴于我太弱今天才会,这里还是写一下吧。 把所有线段按左端点从小到大排序,按右端点为第二关键字从大到小排序,我们首先维护一个栈,是为了把所有包含其它线段的线段删掉,因为选这些线段一定不优。删完之后,这些线段的左右端点都是单调的了。那么我们贪心从小到大选择,一旦能选某条线段就马上选...原创 2018-05-13 10:02:42 · 751 阅读 · 0 评论 -
【BZOJ4571】美味(SCOI2016)-主席树+贪心
测试地址:美味 做法:本题需要用到主席树+贪心。 考虑一次询问,要使bi xor (aj+xi)bi xor (aj+xi)b_i\space xor\space (a_j+x_i)最大,我们从高位向低位贪心,我们知道涉及的询问是:将每个数按二进制位从高位到低位写出,对于某一个前缀,询问存不存在异或bibib_i后满足前缀为当前前缀的aj+xiaj+xi...原创 2018-05-05 22:31:42 · 256 阅读 · 0 评论 -
【BZOJ5289】排列(HNOI&AHOI2018)-贪心+堆+并查集
测试地址:排列 做法:本题需要用到贪心+堆+并查集。 观察题目中的条件,实际上就是指aiaia_i不能出现在iii之前,也就是说,我们可以把问题看成选点,如果点iii是第TTT个选的,会获得TwiTwiTw_i的收益,并且aiaia_i不能比iii先取,求最大的收益。 如果没有限制条件,根据排序不等式,先取小的肯定是最优的,可是考虑限制后怎么办呢? 首先,如果约束条件形成了一个环,显然不可...原创 2018-05-04 10:25:18 · 255 阅读 · 0 评论 -
【NOI2014T1】起床困难综合症-贪心+位运算
【NOI2014T1】起床困难综合症-贪心+位运算原创 2017-03-27 16:51:16 · 621 阅读 · 0 评论 -
【洛谷2017年3月月赛】Round1第四题-环套树森林DFS+贪心
【洛谷2017年3月月赛】Round1第四题-环套树森林DFS+贪心原创 2017-03-12 22:35:44 · 634 阅读 · 0 评论 -
【BZOJ3990】排序(SDOI2015)-DFS+贪心
【BZOJ3990】排序(SDOI2015)-DFS+贪心原创 2017-03-23 18:49:51 · 435 阅读 · 0 评论 -
【APIO2010T2】巡逻-贪心+树形DP
【APIO2010T2】巡逻-贪心+树形DP原创 2017-03-21 17:25:09 · 487 阅读 · 0 评论 -
【NOI2003T4】逃学的小孩-贪心+树形DP求直径+倍增LCA
【NOI2003T4】逃学的小孩-贪心+树形DP求直径+倍增LCA原创 2017-03-26 18:15:39 · 724 阅读 · 0 评论 -
【APIO2012T1】派遣-贪心+左偏树
【APIO2012T1】派遣-贪心+左偏树原创 2017-03-26 22:12:17 · 499 阅读 · 0 评论 -
【HDU3480】Division-DP+四边形不等式优化+贪心
【HDU3480】Division-DP+四边形不等式优化+贪心原创 2017-04-18 20:07:52 · 488 阅读 · 0 评论 -
【NOI2010T4】航空管制-拓补排序+贪心
【NOI2010T4】航空管制-拓补排序+贪心原创 2017-04-06 11:25:08 · 511 阅读 · 0 评论 -
【NOI2015T4】荷马史诗-优先队列实现K进制哈夫曼编码+贪心
【NOI2015T4】荷马史诗-优先队列实现K进制哈夫曼编码+贪心原创 2017-04-21 21:27:56 · 960 阅读 · 0 评论 -
【BZOJ4813】小Q的棋盘(CQOI2017)-贪心+DFS
【BZOJ4813】小Q的棋盘(CQOI2017)-贪心+DFS原创 2017-05-19 14:02:10 · 455 阅读 · 0 评论 -
【BZOJ3991】寻宝游戏(SDOI2015)-贪心+DFS序+set
测试地址:寻宝游戏 做法:本题需要用到DFS+set。 首先需要看出,无论从哪个点出发结果都相同。然后就是要找一种能得到最优解的走法,显然走每条边222次是最优的,那怎么样构造出走法呢?其实只要按照这些点的DFS序顺序走下去,最后走回第一个点即可。因为对于涉及到的每条边,只下去一次再上来一次,所以这个肯定最优。那么我们每次插入或删除一个点时,实际上只影响到它在DFS序中相邻的两个点之间的贡献,...原创 2018-03-16 20:49:07 · 257 阅读 · 0 评论 -
【BZOJ2115】XOR(WC2011)-异或线性基+DFS树+贪心
测试地址:XOR 做法:本题需要用到异或线性基+DFS树+贪心。 这题有很多神奇的结论,本蒟蒻只会感性证明,严谨证明就请各位大佬自己脑补了…… 首先我们有一个结论: 结论1:任何一条从111到NNN路径的异或和,都可以表示成任何一条从111到NNN的路径和几个与该路径在同一连通块中的环的异或和。 感性证明一下,因为是异或和,所以一条边走两次就相当于抵消掉了,那么一条路径最后肯定会抵消成一...原创 2018-03-22 20:19:46 · 183 阅读 · 0 评论 -
【BZOJ4004】装备购买(JLOI2015)-线性基+贪心
测试地址:装备购买 做法:本题需要用到线性基+贪心。 很容易看出,这题要求一个权值和最大的线性无关组,这次是真的原版线性基了,而不是异或线性基,所以为了保证精度,要开long double,而且写法也和异或线性基略有不同,详见代码。 以下是本人代码:#include <bits/stdc++.h>using namespace std;int n,m,p[510];...原创 2018-03-29 20:07:51 · 236 阅读 · 0 评论 -
【BZOJ2460】元素(BJOI2011)-异或线性基+贪心
测试地址:元素 做法:本题需要用到异或线性基+贪心。 有关异或线性基的知识可以看这里。 根据题目的意思,我们需要找到一个矿石的子集,使得不存在任何一个子集使得子集内矿石的编号异或和为000,也就是说,要选出一个关于异或运算的线性无关组。而在求线性基的时候,我们实际上也求出了一组线性无关组。根据求线性基算法的相关性质,我们把数字放进去的先后顺序并不影响求出的线性基本身,而先放进去肯定最有可能成...原创 2018-03-21 20:15:53 · 291 阅读 · 0 评论 -
【BZOJ3105】新Nim游戏(CQOI2013)-博弈论+异或线性基+贪心
测试地址:新Nim游戏 做法:本题需要用到博弈论+异或线性基+贪心。 首先根据博弈论的基本知识,标准的Nim游戏中,只要所有火柴堆内的火柴数目的异或值为000,那么先手必败,否则先手必胜。而这个新的游戏在经过前两轮后就是一个由我们先手的标准Nim游戏,那么后手为了胜利,必然会留下若干堆火柴,使得它们的异或值为000,而我们为了胜利,就不能提供后手这个机会,那么我们就要使得我们选完后,留下的火柴...原创 2018-03-21 20:41:19 · 295 阅读 · 0 评论 -
【BZOJ3532】LIS(SDOI2014)-最小割+贪心+退流
测试地址:LIS 做法:本题需要用到最小割+贪心+退流。 如果仅仅是求最小代价,就是很经典的模型了,令f(i)f(i)f(i)为以第iii个元素结尾的LIS长度,那么如果有i&lt;j,ai&lt;aji&lt;j,ai&lt;ajif(i)+1=f(j)f(i)+1=f(j)f(i)+1=f(j),就从iii向jjj连一条边,那么每条从一个f(i)=1f(i)=1f(i)=1的点到一个f(i...原创 2018-05-10 10:38:42 · 210 阅读 · 0 评论 -
【NOIP2011提高组T6】观光公交-贪心
【NOIP2011提高组T6】观光公交-贪心原创 2016-07-21 22:18:30 · 549 阅读 · 0 评论