
贪心
文章平均质量分 89
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【2019集训队互测】学习轨迹(贪心)
传送门题解:首先没有限制的话排个序就完事了。如果有限制的话,显然我们需要干的事情就是做出修正。按照权值从小到大排序。考虑什么情况下非法,权值小的依赖权值大的。这个时候的修正非常明显,把这个区间拎出来,无依赖的升序,然后有依赖的降序排在后面。这样的区间可以通过一次差分前缀和找出来。容易注意到有的时候我们把若干个区间合并可以得到更优的答案。简单讨论可以发现,如果不是全部合并,必然是...原创 2020-04-14 15:54:56 · 615 阅读 · 0 评论 -
【校内模拟】数值修改(贪心)(DP)
简要题意:给一个十进制数,每次可以选择它的一个数码,然后它的值减去你选择的这个数码。重复这个操作,直到这个数变成0,问最少需要多少次操作。x≤1e18x\leq 1e18x≤1e18脑子卡住是什么感觉。就是发现了正解要用的性质,不知道为什么就是没有继续往下细想。啊艹为什么题解:首先容易注意到答案是单调不减的。要证明这一点可以归纳,考虑 iii 和 i+1i+1i+1 假设之前的...原创 2020-04-14 15:19:07 · 216 阅读 · 0 评论 -
【校内模拟】深邃(贪心)(二分答案)
简要题意:一棵树,有 kkk 个关键点,请你把树划分为若干联通块,使得每个联通块包含至少一个关键点,最小化最大的联通块的大小。题解:首先容易注意到可以二分答案。然后考虑怎么判断,进行dfs,每个点尽量贪心往下划分。hvuhv_uhvu 表示 uuu 为根的子树,uuu 这个联通块还能多容呐的点数。ntunt_untu 表示 uuu 为根的子树,无法向下分到任何一个联通块的点数。...原创 2020-04-09 17:09:17 · 166 阅读 · 0 评论 -
【Atcoder Grand Contest 043】【AGC043】C - Giant Graph(贪心)(SG函数)(FWT)
传送门题解:容易发现这个独立集直接从大到小贪心选择即可。一个点能被选当且仅当所有比它大且与它相连的点都没有被选(容易发现 i+j+ki+j+ki+j+k 相同的点之间不会有边)。发现这个和 ICGICGICG 的局面 NPNPNP 性是一样的,这里有三个独立游戏,分别算一下 SGSGSG 函数,最后 SGSGSG 值为 000 的局面都可以选。可以 FWTFWTFWT ,也可以暴力计算...原创 2020-03-24 21:00:36 · 373 阅读 · 0 评论 -
【JOI 2020 Final】【LOJ3252】只不过是长的领带(贪心)
传送门全状态康复计划开始,先刷水题找手感题解:排序,考虑拿走第 kkk 个的时候前 k−1k-1k−1 个 A,BA,BA,B 一一对应,后面的位移一下对应,记录前后缀最大值即可。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constnamespace I...原创 2020-03-21 19:28:01 · 361 阅读 · 0 评论 -
【NOI2019】序列(模拟费用流)(可删堆)
传送门题解:第一次凭本事做出 NOI 的 T3 。首先有一个非常显然的费用流建模如下,边用二元组 (cap,cost)(cap,cost)(cap,cost) 表示:SSS 向 S′S'S′ 连 (K,0)(K,0)(K,0) 。 S‘’S‘’S‘’ 分别向 iii 点连 (1,ai)(1,a_i)(1,ai) ,iii 点向 i′i'i′ 点连 (1,0)(1,0)(1,0),i′i...原创 2020-03-08 12:09:49 · 529 阅读 · 0 评论 -
【校内模拟】Fancy(Trie)(贪心)(树形DP)
简要题意:给三棵 trie 树,请你分别回答下列三个问题的最大最小值。第一棵树上点两两距离之和。在第一和第二棵树上连一条边之后,两棵树所有点两两距离之和。分别在第一棵和第二棵树,第二棵和第三棵树上连一条边,求三棵树所有点两两距离之和。题解:首先问题一是不存在多个答案的,考虑每条边被经过多少次可以得到,答案显然就是 ∑(n−sizu)sizu\sum(n-siz_u)siz_u∑...原创 2020-03-04 17:01:18 · 153 阅读 · 0 评论 -
【校内模拟】《名字很高端但是和OI半毛钱关系没有的题#2》(贪心)
简要题意懒得写了,傻逼题一道。和 LOJ520绯色IOI(开端)一模一样的结论。题解也懒得写,放个代码得了。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constnamespace IO{ inline char gc(){ static cs int R...原创 2020-02-14 14:12:35 · 242 阅读 · 0 评论 -
【校内模拟】小B的班级(贪心)(组合数学)
简要题意:给一棵 nnn 个点的树,边有边权。现在有 mmm 个A类点, mmm 个B类点,两两不同,这 2m2m2m 个点在树上选定位置 (可以有多个点在同一个位置),然后进行配对,最大化配对点的距离之和,问所有方案的距离之和是多少。n,m≤2.5e3n,m\leq 2.5e3n,m≤2.5e3题解:经典结论 (虽然我已经忘了上次见是在什么时候) ,直接考虑每条边被经过多少次,假设其中...原创 2020-02-08 15:15:12 · 392 阅读 · 0 评论 -
【CF878E】Numbers on the blackboard(贪心)(并查集)
传送门怎么说呢。。。这个贪心,难以形容。。。题解:首先考虑全为正数的时候,显然就是贪心从尾部开始向前合并,全为负数的时候,显然就是贪心每次取头部两个合并。其实大胆猜想+证明可以得到这道题正确的贪心方式。注意到贡献的表示形如∑ai2ki\sum a_i2^{k_i}∑ai2ki,我们希望尽可能最大化正数的贡献。对于一个序列,从最后一个位置开始考虑。如果这个位置为正,与前面的合并,...原创 2019-11-11 16:20:42 · 287 阅读 · 1 评论 -
【SDOI2019】热闹的聚会与尴尬的聚会(乱搞)(贪心)
传送门题解:其实仔细看一下发现是要使得n<(p+1)(q+1)n<(p+1)(q+1)n<(p+1)(q+1),并且P,QP,QP,Q两个集合互不相关。那么其实问题就是找一个尽可能大的独立集(众所周知最大独立集是NP-Hard)和一个最小度数尽可能大的子图。第一反应:这怎么没有输出-1???一定有解???确实是一定有解。我在LOJ提交记录里面看到了好多乱搞,比如说什...原创 2019-10-25 11:42:47 · 371 阅读 · 0 评论 -
【校内模拟】Speike(贪心)
简要题意:给出若干个不相交矩形,你不能经过这些矩形内部,但是可以经过边界,你只能走平行于坐标轴的路径。问从(0,0)(0,0)(0,0)到(xt,0)(x_t,0)(xt,0)的最短距离。保证所有矩形被夹在x=0x=0x=0和x=xtx=x_tx=xt两条直线之间。题解:仔细想一想就会发现很多性质。首先在横坐标上我们不可能走回头路。在纵坐标上我们可以只在撞墙的时候拐弯,这样可以忽略矩...原创 2019-10-24 16:05:40 · 271 阅读 · 0 评论 -
【BJOI2019】删数(贪心)(线段树)
传送门题解:话说 BJOI2019 Day2 稍微难点的就这一道啊,而且这道题也不算特别难的。那BJ今年省选Day1爆炸的岂不是翻盘无望首先考虑一个正确性显然的贪心。我们把所有数放到数轴上,重复的叠起来,然后把[1,n][1,n][1,n]中的柱子(宽度忽略不计)向左边推倒。没有覆盖的位置总数就是答案。于是我们维护一个全局位移标记,线段树维护每个点覆盖次数,区间000的个数。修改就很好处理了。...原创 2019-10-21 16:54:15 · 210 阅读 · 0 评论 -
【BZOJ3716】[PA2014]Muzeum(坐标旋转)(贪心)(最大权闭合子图)
传送门题解:首先这道题的最大权闭合子图模型是很显然的,但是我们并不能建图拿来跑最大流。考虑利用图的特殊性质把最大流贪心流出来。首先所有坐标乘上余切然后旋转,把一个警卫看得到的所有手办放到左上方向。将所有点按照横坐标从小到大排序。处理一个警卫之前先把所有横坐标比他小的加入,然后从纵坐标最小的能流的开始贪心流就行了。这样贪心的正确性是显然的,考虑我们把一个在较大纵坐标流的放到一个较小纵...原创 2019-10-14 15:03:01 · 191 阅读 · 0 评论 -
【BZOJ2034】[2009国家集训队]最大收益(模拟费用流)(贪心)
传送门题解:首先注意到是一个很显然的二分图最大权匹配模型。但是又不可能把图建立出来跑费用流,复杂度不允许。考虑一个贪心,从价值大的开始考虑,能放就放,最终得出的一定是最优解,正确性可以类比费用流来证明。于是现在问题就是如何判断当前考虑的这个元素是否能放下。首先我们考虑把所有能放的尽量放到靠前的位置。显然如果全部放下,可能访问的位置也只有O(n)O(n)O(n)个,把这nnn个位置处理出...原创 2019-10-14 14:07:17 · 252 阅读 · 0 评论 -
【BZOJ4977】[[Lydsy1708月赛]跳伞求生(贪心)(模拟费用流)
传送门题解:很显然的费用流模型,考虑将所有点拿来按照aia_iai和bib_ibi排序后贪心进行匹配。然后把负的代价退掉即可。堆维护一下贪心即可。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using st...原创 2019-10-12 16:30:31 · 322 阅读 · 0 评论 -
2018.10.04【CodeForces1060】D. Social Circles(贪心)
传送门解析:有毒吧这道题。。。又是一道思维题。。。思路:最开始考虑的是先将所有人单独成一个圈,再考虑如何合并减小答案。然而蒟蒻不知道如何维护。。。所以我们为什么要维护?先给出大致结论:我们直接选择左走最大和右走最大合并起来,将他们作为一个新的节点,再丢回去考虑,知道不能更优为止。考虑怎么重叠能够使答案最小。其实很简单,左走最大的那个人,他左边不可能有小于限制那么多的凳子,那么...原创 2018-10-04 22:17:43 · 562 阅读 · 0 评论 -
【GXOI/GZOI2019】宝牌一大堆(麻将DP)(贪心)
传送门其实还有第三种麻将——四川麻将,规则和其他麻将都不太像,甚至在四川不同地区的规则也不一样。而关于麻将胡牌的题,能够利用DP解决的,我们可以将这种技巧成为麻将DP题解:这篇题解里面用的是川麻的语言习惯。首先注意到杠子是废的,我们永远不可能考虑用一个杠子代替一个刻子,因为它权值永远小于刻子。(没注意到没关系,反正写到DP里面杠子的转移就一行)国士无双可以直接枚举重复的那个是什么O(...原创 2019-09-06 09:58:18 · 409 阅读 · 0 评论 -
【SHOI2010】最小生成树(贪心)(最小割)
传送门题解:首先这个全局-1可以等价成单点+1。考虑建树的Kruskal算法。发现其实就是要求在加入权值小于等于这条边的那些边的时候,S,TS,TS,T不连通。显然最小割。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constcs int N=507,...原创 2019-09-16 11:57:39 · 225 阅读 · 0 评论 -
【校内模拟】xor(线性基)(贪心)
读优写挂见祖宗题解:注意到一条边存在于割CCC中当且仅当它的两个端点属于不同的点的集合。对于割C=<S,T>C=<S,T>C=<S,T>其权值为SSS中每个点相邻的边的权值的异或和。设每个点的权值为所有相邻边的权值的异或和,则我们需要选出一个点的权值的极大线性无关组,使得www之和最大。直接贪心即可,正确性显然。如果说我们能够用几个www较小的替换一...原创 2019-09-23 10:08:55 · 146 阅读 · 0 评论 -
【POJ2054】Color a Tree(保序回归问题)(贪心)(证明)
传送门比较难的贪心,目前网上没有任何一篇题解有严格的数学证明,所以我来水一发。这道题本质其实是一个保序回归问题,但是有一个参数要取整数就没办法用一般的保序回归解法了。题解:首先我们随便构造一个合法的操作序列T[1:n]T[1:n]T[1:n],考虑以下的邻项交换策略:对于T[i]T[i]T[i]和T[i+1]T[i+1]T[i+1],如果T[i]T[i]T[i]不是T[i+1]T[i+...原创 2019-09-28 09:59:25 · 347 阅读 · 0 评论 -
【LOJ520】「LibreOJ β Round #3」绯色 IOI(开端)
传送门题解:排序。现在问题是找出两条从111到nnn的路径使得代价最小。显然路径上点的编号只可能递增。容易证明iii和i+1i+1i+1不能存在于同一条路径中。考虑p<i<i+1<qp<i<i+1<qp<i<i+1<q,且p,qp,qp,q不与i,i+1i,i+1i,i+1在同一路径,交换显然平方和会变小。所以合法方案就是(1,2...原创 2019-10-04 16:17:46 · 409 阅读 · 0 评论 -
【CF1037H】Security(贪心)(SAM)(线段树)
传送门题解:和 NOI2018 你的名字 是一个套路。首先我们求出ttt在sss中的匹配位置。然后贪心考虑尽可能让答案前缀和TTT相同。也就是说我们要在某个匹配后面接一个比TTT当前位置大的字符,然后看能不能在[l,r][l,r][l,r]中匹配上。线段树合并维护一下right集合。然后看能否匹配直接看right集合在这个区间是否为空即可。代码:#include<bits/...原创 2019-10-08 18:56:30 · 185 阅读 · 0 评论 -
【51nod1312】最大异或和(线性基)(高斯消元)(贪心)
传送门题解:首先塞到线性基上面。显然线性基外面的数全部可以变成最大异或和。线性基里面的,先高斯消元,然后将最大的基变成最大异或和。剩下的基显然最好的结果就是直接和最大异或和xor起来。直接贪心即可。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs const...原创 2019-08-30 21:37:03 · 193 阅读 · 0 评论 -
【CREC2016 J】【CF GYM 101173】【洛谷P3686】【BZOJ4795】Jazz Journey(贪心)
CF传送门洛谷传送门BZOJ传送门题解:首先我们发现只需要考虑所有的(u,v)(u,v)(u,v)和(v,u)(v,u)(v,u)的飞行计划就行了。而在考虑(u,v)(u,v)(u,v)的时候,其他的并不重要。我们也只需要考虑所有(u,v)(u,v)(u,v)和(v,u)(v,u)(v,u)的相对顺序。现在问题变为:有一个010101序列(即(u,v)(u,v)(u,v)和(v,...原创 2019-07-25 19:35:47 · 198 阅读 · 0 评论 -
【YNOI2017】【BZOJ4811】【洛谷P3631】由乃的OJ / 睡觉困难综合征(树链剖分)(线段树)(贪心)
BZOJ传送门洛谷传送门代码:#include<bits/stdc++.h>#define re register#define gc get_char#define cs consttypedef unsigned long long ull;namespace IO{ inline char get_char(){ static cs int Rlen...原创 2019-04-17 11:29:22 · 393 阅读 · 0 评论 -
2018.10.25【NOIP练习】ZUA球困难综合征/记忆(线段树)(数位DP)(位运算骚操作)(按位贪心)
传送门(由于现在OJ上有两道重名的题,所以请先确认你要找的题解是不是这道题的)解析:这道题有两种做法,二元组维护信息+二进制数位DP,三元组维护信息+按位贪心。(其实二元组也可以按位贪心,三元组也可以数位DP。。。)好写的二元组需要卡常才能过,因为数位DP还是太慢了。。。解法1:二元组+数位DP我们在线段树节点维护一个二元组(v0,v1)(v_0,v_1)(v0,v1)表示每一位...原创 2018-10-25 16:22:13 · 488 阅读 · 0 评论 -
2018.10.25【NOI2014】【BZOJ3668】【洛谷P2114】起床困难综合征(贪心)
BZOJ传送门洛谷传送门解析:直接用一个全1的0x7fffffff0x7fffffff0x7fffffff和一个000穿过所有门得到每个位原来为1和原来为0最后的结果。也就是真值表。然后我们根据真值表来贪心就可以了,从高位开始枚举,如果能够0−&gt;10-&gt;10−>1就贪心把当前为选择000,不然看111的最终结果,如果也是000就直接放弃这一位,如果是11...原创 2018-10-25 09:04:44 · 257 阅读 · 0 评论 -
2018.09.29【Atcoder Regular Contest 103】C - /\/\/\/(贪心)
传送门解析:这道题是个显然的贪心,考虑在交错序列中选择两个不在同一列上的数,那么除此以外的所有数都要被替换,为了替换尽可能少,就需要贪心选择最大的。然而最大的可能在在两个序列中是同一个数,题目要求不能将两列替换成同样的数。所以我们同时维护次大值。注意这里的次大值维护需要多一点考虑,具体在代码里面体现的很清楚了。代码:#include&lt;bits/stdc++.h&gt;usin...原创 2018-09-29 23:30:53 · 216 阅读 · 0 评论 -
2018.10.04【CodeForces1060】C. Maximum Subrectangle(贪心)
传送门解析:这道题直接模拟是O(n3m3)O(n^3m^3)O(n3m3)的,怎么乱搞都搞不动。其实直接模拟的话,有很多状态是显然不够优的我们实际上可以将矩阵元素和转化一下:∑i=x1x2∑j=y1y2ci,j=∑i=x1x2∑j=y1y2ai×bj\sum_{i=x_1}^{x_2}\sum_{j=y_1}^{y_2}c_{i,j}=\sum_{i=x_1}^{x_2}\sum_{j=...原创 2018-10-04 23:08:30 · 241 阅读 · 0 评论 -
2018.10.27【LOJ6035】「雅礼集训 2017 Day4」洗衣服(贪心)(堆)(排序不等式)
传送门解析:首先考虑没有BBB机器怎么做?显然直接堆维护一下每一个机器完成下一个任务的时间节点,然后处理LLL次就完了。我们对BBB机器也这样做一次,两次的结果按照一大一小的顺序拼回来,取最大值就行了(根据神奇的排序不等式)。证明有时间再说吧(估计要鸽),这里记录一下结论。代码:#include<bits/stdc++.h>using namespace std;...原创 2018-10-27 23:15:01 · 301 阅读 · 0 评论 -
2018.10.31【校内模拟】一串数字(唯一分解)(贪心)
传送门解析:其实很容易想到分解质因数,然后次数%3\%3%3后合并计算出它的特征数,同时计算出不能与它共同选择的数的特征数。显然特征数相同的数可以合并。然后两个中贪心就是了。注意所有本来就是立方数的数当中,我们直接选择价值最大的那个。代码:#include<bits/stdc++.h>using namespace std;#define ll long long...原创 2018-11-01 15:47:02 · 158 阅读 · 0 评论 -
2018.11.07【洛谷P2123】皇后游戏(贪心)(结论)
传送门BB:蒟蒻太菜了,就不写解析了,放一个看的比较懂的大佬的博客吧代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar#define cs constinline in...原创 2018-11-07 19:05:19 · 228 阅读 · 0 评论 -
2019.04.01【校内模拟】River(贪心)(倍增)
传送门解析:显然在每个点的时候,决策是确定的,我们将aaa数组扩大一倍,设nxtinxt_inxti表示当前处于时间周期中的iii位置,进行下一步操作需要的最少时间,则:nxti=mini≤j<i+m(aj+j)−inxt_{i}=\min_{i\leq j < i+m}(a_j+j)-inxti=i≤j<i+mmin(aj+j)−i直接维护后...原创 2019-04-01 21:47:46 · 149 阅读 · 0 评论 -
【十二省联考2019】【LOJ3052】【洛谷P5290】【BZOJ5499】春节十二响(贪心)(树链剖分)(线段树)
LOJ传送门洛谷传送门BZOJ传送门解析;来给大家看一个看似O(nlog2n)O(n\log ^2n)O(nlog2n)实际上是O(nlogn)O(n\log n)O(nlogn)大常数的菜鸡做法。考场上yyyyyy出来的。来看一个正确性显然的贪心:首先我们在当前没有选择的点中选出代价最大的点,将它的掌控范围,即它到根的链和它的子树,全部ban掉,即本轮禁选。将它的权值加入答案...原创 2019-04-10 16:06:31 · 366 阅读 · 0 评论 -
【十二省联考2019】【LOJ3048】【洛谷P5283】【BZOJ5495】异或粽子(01Trie)(堆)
LOJ传送门洛谷传送门BZOJ传送门解析:这个。。。其实怎么开心怎么玩就好了。可以只建一个01Trie,然后查询前k∗2k*2k∗2的值就行了。也可以只建一个,然后每个在自己的01Trie里面查询就行了。还是挺休闲的。代码:#include<bits/stdc++.h>#define ll long long#define re register#defin...原创 2019-04-10 15:43:21 · 260 阅读 · 0 评论 -
【清华集训2017】【LOJ2324】【洛谷P4006】小 Y 和二叉树(贪心)
LOJ传送门洛谷传送门解析:其实仔细想一想,这道题其实需要支持的操作就是交换左右儿子和Splay里面的Rotate,然后求最小中序遍历。显然Rotate是不会改变中序遍历的,重点其实就是交换左右儿子。我们找到第一个度数小于三的点,显然它就是最优解中极左链的末端。处理出以它为根的时候每个点子树中序遍历的最小开头。然后贪心选择最小的那边,考虑一个作为父亲另一个作为右儿子的情况就行了。...原创 2019-04-05 00:13:58 · 206 阅读 · 0 评论 -
2019.03.27【SCOI2016】【洛谷P3249】【BZOJ4567】【LOJ2012】背单词(Trie)(贪心)
洛谷传送门BZOJ传送门LOJ传送门解析:我们发现总是存在一种办法使得全程都不出现情况一。而全程都不出现情况一,总贡献甚至不可能达到n2n^2n2。所以我们的策略就是绝不出现情况一。然后考虑怎么给同一个串的后缀安排顺序。转为给所有以这个串为后缀的串安排顺序。显然“一个串是另一个串的后缀”这个关系是一个树形结构。我们发现按照子树的siz从小到大处理就能同时最小化222和333的贡...原创 2019-03-27 11:29:15 · 177 阅读 · 0 评论 -
2019.02.26【九省联考2018】【BZOJ5249】【洛谷P4364】IIIDX(贪心)(树状数组)
BZOJ传送门洛谷传送门解析:首先我们有一个很显然的 错误 的贪心,按照字典序和siz依次将最大的sizsizsiz个权值分配给以某个点为根的子树,然后根节点选择最小的权值后递归处理。很遗憾,它只能处理所有ddd不同的情况。比如这组数据:4 3.01 1 2 2答案应该是:1 2 2 1然而贪心是:1 1 2 2考虑为什么会出现这种情况,这时候,贪心的结果出来111...原创 2019-02-26 16:42:09 · 222 阅读 · 0 评论 -
2019.03.01【HNOI2018/AHOI2018】【BZOJ5289】【洛谷P4437】排列(贪心)
BZOJ传送门洛谷传送门解析:写这个题面的真的厉害。。。简单叙述一下题意:给出一个序列aaa,一个下标的排列ppp是合法的,当且仅当对于每个jjj,当前数为ap[j]a_{p[j]}ap[j],且ap[j]a_{p[j]}ap[j]的值没有在下标数组ppp的第jjj个位置及以后出现过。可以这么理解,aaa是原数组,ppp下标数组。换句话说,aja_jaj在下标数组中要比jjj...原创 2019-03-01 19:09:39 · 256 阅读 · 0 评论