
贪心
文章平均质量分 82
贪心
ez_lcw
这个作者很懒,什么都没留下…
展开
-
【CQOI2017】小Q的棋盘(贪心)
题意:给你一棵 nnn 个点的树,从根节点开始走 mmm 步,最多能遍历多少个节点。题解:考虑我们走的路径,设起点是 SSS,终点是 TTT,那么我们肯定是走的类似这么一条路径:设 S→TS\to TS→T 这条链的长为 lll,那么我们在子树中走了 m−lm-lm−l 步,子树中恰好会走 m−l2\frac{m-l}{2}2m−l 个点,那么我们总共会走 l+1+m−l2l+1+\frac{m-l}{2}l+1+2m−l 个点。那么我们挑 S→TS\to TS→T 最长的那条链作为 lll原创 2022-01-10 22:02:35 · 244 阅读 · 0 评论 -
【XSY2815】净空(贪心,线段树)
题目要求我们分解为 x=∏i=1m(ci!)ti⋅px=\prod_{i=1}^m(c_i!)^{t_i}\cdot px=∏i=1m(ci!)ti⋅p,那么显然 cic_ici 不可能大于等于 105+310^5+3105+3(为质数),否则 ci!c_i!ci! 就会包括这个质数,而 xxx 不可能包含这个质因子。那么肯定是枚举 NNN 从 105+210^5+2105+2 到 222,过程中不断贪心地试除 N!N!N!。先对 x=∏i=1nai!x=\prod_{i=1}^n a_i!x原创 2021-10-28 17:04:47 · 136 阅读 · 0 评论 -
【HNOI/AHOI2018】排列(树上一类全序问题)
这个条件给的有点诡异:对于任意的 apj=pka_{p_j}=p_kapj=pk,都有 k<jk<jk<j。那么对于某个 ax=ya_x=yax=y,意思就是 yyy 在 ppp 中的位置小于 xxx 在 ppp 中的位置。那么如果我们连边 (ax,x)(a_x,x)(ax,x),就是要求图中没有环,是一棵树,而且父亲在 ppp 中的位置要小于儿子在 ppp 中的位置。再看一下要求:按 ppp 的顺序把 i×wpii\times w_{p_i}i×wpi 加起来得到总权原创 2021-09-10 20:24:15 · 154 阅读 · 0 评论 -
【HDU6326】Monster Hunter(树上一类全序问题)
先考虑没有树的限制,即我们可以任意安排顺序打怪兽,那么这就是一个全序问题。考虑在某种顺序下,假设初始血量为 ststst,那么打到第 iii 个怪物时剩余的血量就是 st+∑j=1i−1(bj−aj)st+\sum\limits_{j=1}^{i-1}(b_j-a_j)st+j=1∑i−1(bj−aj),如果设 sumi=∑j=1i−1(bj−aj)sum_i=\sum\limits_{j=1}^{i-1}(b_j-a_j)sumi=j=1∑i−1(bj−aj),那么我们就需要保证 ∀i,s原创 2021-09-09 16:37:10 · 341 阅读 · 0 评论 -
【AGC023F】01 on Tree(树上一类全序问题)
显然如果没有树的限制,我们优先选 000,然后选 111。如果有了树的限制,我们考虑下面这么一种贪心方法:假设当前能够选的点的集合为 SSS(初始时 SSS 只包含根),然后选出 SSS 中优先级最大的点 uuu(000 的优先级大于 111 的优先级)放在序列末尾,然后把 uuu 从 SSS 中删除,并且把 uuu 的儿子都塞进 SSS 里面,再重复上述过程直至 SSS 为空为止。这个贪心方法看起来很对,但可能会出现下面这种情况:如图,我们选完根节点 111 后,SSS 中包含的是节点 222 和原创 2021-09-09 15:33:48 · 482 阅读 · 0 评论 -
【NOIP2012】国王游戏(一类全序问题)
设按新安排的队伍顺序第 iii 个人左手数字为 aia_iai,右手数字为 bib_ibi。我们考虑什么时候交换第 iii 个人和第 i+1i+1i+1 个人不会更优。设前 i−1i-1i−1 个人获得的金币的最大值为 preprepre,他们 aia_iai 的乘积为 sss。由于交换第 iii 个人和第 i+1i+1i+1 个人对后面的人获得的金币数没有影响,所以我们只需要让前 i+1i+1i+1 个人的最大值最小。交换前:ans1=max(pre,sbi,s⋅aibi+1)ans_1=原创 2021-08-31 15:12:35 · 1103 阅读 · 0 评论 -
【XSY3678】最大值(贪心,二进制)
贪心。从高位往低位考虑。首先,如果当前位所有区间都能取到 111,那么我们就都取 111。否则,肯定有区间不能取到 111,所以这一位并出来之后只能为 000。而且当前所有区间可以分成这三类:这一位只能取 000 的、这一位只能取 111 的、这一位 000 和 111 都能取的。对于前两类我们维持不变,对于最后那一类我们这一位全部取 000,因为此时后面的所有位都能取 111,肯定最优。时间复杂度 O(nlogV)O(n\log V)O(nlogV),其中 VVV 为值域。#i原创 2020-12-31 14:08:15 · 127 阅读 · 0 评论 -
【SCOI2016】美味(主席树,贪心)
看到异或最大,第一反应是用 01trie 做。但是 01trie 不能实现区间加法,所以不好做。看回题目,从最简单的思路去想:设 ansansans 能使得 ans xor bans\ \operatorname{xor}\ bans xor b 最大。每次将 bbb 二进制拆分,设二进制下 bbb 的第 iii 位为 bib_ibi(第 000 位为最低位),ansansans 的第 iii 位为 ansians_iansi。然后我们贪心地从高位往低位原创 2020-08-26 11:35:15 · 197 阅读 · 0 评论 -
【HEOI2015】兔子与樱花(贪心)
首先想一下题目中的操作如何转化:当一个节点被去掉之后,这个节点上的樱花和它的儿子节点都被连到删掉节点的父节点上。设当前节点为 uuu,uuu 的父节点为 fafafa,儿子个数为 sonuson_usonu。那么当我们把节点 uuu 删去时,fafafa 的樱花数会加上 cuc_ucu,儿子个数会加上 son−1son-1son−1(减 111 是因为 uuu 本来是 fafafa 的儿子但被删去了)。那么删去一个节点对其父亲的负载增加值就被我们算出来了,设为 vali=cu+sonu−1va原创 2020-07-28 20:21:47 · 345 阅读 · 0 评论 -
【loj6035】【雅礼集训 2017 Day4】洗衣服(贪心,优先队列)
我们先用优先队列的方式分别处理出只让所有衣服洗完的时间和只让所有衣服烘干的时间。然后我们考虑怎么分配衣服。最优情况肯定是让最慢洗完的衣服放进最快烘干的烘干机里面。直接维护即可。代码如下:#include<bits/stdc++.h> #define L 1000010#define N 100010#define ll long long using namesp...原创 2019-11-02 21:32:29 · 230 阅读 · 0 评论