随笔分类 -  算法->贪心

摘要:LOJ 3032. 「JOISC 2019 Day1」馕 处理出每个人把馕切成N段,每一段快乐度相同,我们选择第一个排在最前的人分给他的第一段,然后再在未选取的的人中选一个第二个排在最前的切一下,并把第二段给他,这样下去一定有解 代码细节具体在比较大小的时候成绩可能需要int128 然后在给每个人分 阅读全文
posted @ 2019-05-31 08:56 sigongzi 阅读(545) 评论(0) 推荐(0)
摘要:题解 ~~感觉自己通过刷水题混LOJ刷题量非常成功~~ 首先是二进制枚举位,判是否合法 要写两个solve不是很开心,$A$不为1的直接记录状态$f[i][j]$为能否到达前$i$个分成$j$段,转移$n^3$ $A$为1的相当于在一张拓扑图上求到$N$的最短路是否小与$B$,连边方式即为如果$su 阅读全文
posted @ 2018-12-18 19:34 sigongzi 阅读(290) 评论(0) 推荐(0)
摘要:题解 虽然要求一个dfs序,但是不是从根开始贪心 从最小的点开始贪心,最小的点显然是父亲选了之后马上就选它 那么我们每次把最小的点和父亲合并,两个联通块之间也是如此 对于两个联通块,他们合并的顺序应该是平均值较小的更靠前 因为有两个联通块和为$S_i$和$S_j$,大小为$B_i$和$B_j$ 如果 阅读全文
posted @ 2018-11-04 20:31 sigongzi 阅读(394) 评论(0) 推荐(0)
摘要:A Candy Distribution Again 大意:有x个糖给n个小朋友,必须分完,小朋友得到糖数为一个确切值的时候小朋友会开心,求最多的开心数 题解 直接排序然后贪心分,如果分到最后一个有剩余那么开心数 1即可 代码 B Garbage Collector 大意:有一个机器人从0点出发,有 阅读全文
posted @ 2018-09-24 19:10 sigongzi 阅读(725) 评论(0) 推荐(0)
摘要:题解 怎么觉得都像树dp,不像贪心 但是树dp确实做不了 把每个节点的值设置为樱花+儿子数 把儿子合并到父亲上就是父亲的剩余容量加上儿子的值 1 每次在父亲的时候将儿子的值排序然后能加就加上 因为儿子如果不加进去那么之后的操作与儿子再也没有关系了,儿子影响的只有父亲,那么只是能让父亲一个节点被加入, 阅读全文
posted @ 2018-09-13 16:38 sigongzi 阅读(346) 评论(0) 推荐(0)
摘要:题解 这显然是一道题拆成两道 然后我胡乱分析了一波,决定第一题就用点度贪心(反正散播的能量肯定能被使用),然后过了 第二题开始mengbier 设$f_u$表示第u个点在父亲发动之后才发动的最小价值 $g_u$表示第u个点在父亲发动之前发动最小价值 转移的时候 $son_f$表示在父亲发动之后才发动 阅读全文
posted @ 2018-08-18 10:10 sigongzi 阅读(239) 评论(0) 推荐(0)
摘要:题解 一道比较神奇的二分图匹配 既然有n个元素,那么能匹配n个位置,我们把这n个位置找出来,是每个区间从左端点开始找到一个没有被匹配到的位置作为该点(我们忽略右端点) 然后我们从价值大到小,然后从左端点的位置开始匹配,如果这个点没有被匹配,就匹配这个点 否则如果这个点已经匹配的区间右端点大于该点的右 阅读全文
posted @ 2018-06-21 08:33 sigongzi 阅读(244) 评论(0) 推荐(0)
摘要:题解 写水题放松一下心情 二进制有个很好的性质是每一位是独立的,我们按位贪心,先看这一位能不能填1,然后看看如果这一位填0那么运算后最后这一位是不是1,是的话就退出,然后看看这一位如果填1最后是1这一位就填1,否则就退出 一次性把所有位填0,所有位填1,然后算两遍,复杂度$O(n + \log m) 阅读全文
posted @ 2018-06-12 14:32 sigongzi 阅读(159) 评论(0) 推荐(0)
摘要:题解 k叉哈夫曼树,但是没有了二叉那样的最后一定能合并成一个树根的优秀性质,我们就不断模拟操作看看到了哪一步能用的节点数 // define ivorysi define enter putchar('\n') define space putchar(' ') define fi first de 阅读全文
posted @ 2018-06-11 13:55 sigongzi 阅读(163) 评论(0) 推荐(0)
摘要:题解 我们发现第一种操作肯定不可取,每个节点里它最近的点是它最长出现过的后缀,发现这就是AC自动机的fail节点,根据fail的关系这会是一棵树,而一个单词的前一个序号最大的后缀必定是它的父亲 然后我们考虑怎么获得最小值,x是肯定要加上的,我们让每次减掉的y最小 一个错误的想法:按照儿子个数分类,建 阅读全文
posted @ 2018-06-08 15:21 sigongzi 阅读(130) 评论(0) 推荐(0)
摘要:题解 考虑朴素的做法,断环为链,复制2M个,找到一个位置i,f(i)是这个位置之前开始的线段,结束位置最远的位置在哪 然后对于每一个人,从自己线段的起点往下跳,跳到起点+M或以后的步数就是答案 我们发现这其实是最后一个点为根构建成的一棵树,很显然的,我们答案只可能是最少的用人数量+1或最少的用人数量 阅读全文
posted @ 2018-06-08 10:44 sigongzi 阅读(147) 评论(0) 推荐(0)
摘要:题解 从后往前递推 如果我们知道了第i天的最优方案和第i天选择的蔬菜,加入第i天选择的蔬菜数量为S,我们只需要减去最小的S (i 1) M 个蔬菜即可 所以我们只要求出最后一天的蔬菜选择 我们把每个蔬菜拆成c 1个价值为a和1个价值为a + s,从大到小排序,然后用并查集维护可以选择的位置 代码 c 阅读全文
posted @ 2018-05-17 17:41 sigongzi 阅读(199) 评论(0) 推荐(0)
摘要:题解 用到一点群论的知识! 我们发现把操作写成一个置换后,一定是单个置换圈的内进行操作,把置换圈进行扩大的操作不优 我们有两个办法,一个是用全局最小的换进来,代替这个圈里最小的值,交换操作完成后再换出去,二是用圈里最小的换完一圈 就两个操作,计算后贪心即可 代码 cpp include includ 阅读全文
posted @ 2018-05-15 18:16 sigongzi 阅读(128) 评论(0) 推荐(0)
摘要:可以说是第一场AGC了,做了三道题之后还有30min,杠了一下D题发现杠不出来,三题滚粗了 rating起步1300+,感觉还是很菜。。。 只有三题水平显然以后还会疯狂 啊(CF的惨痛经历) 改题的感觉似乎还不错因为思维都非常的妙(我根本想不到) A Zero Sum Ranges 开场娱乐大家的小 阅读全文
posted @ 2018-05-03 12:59 sigongzi 阅读(509) 评论(0) 推荐(0)
摘要:Farmer John is stuck with another problem while feeding his cows. All of his N (1 ≤ N ≤ 100,000) cows (numbered 1..N) are lined up in front of the bar 阅读全文
posted @ 2017-02-27 15:19 sigongzi 阅读(555) 评论(0) 推荐(0)
摘要:————————————————————题解 统计这一列或行放通道能隔开几个人,然后贪心 输出没有排序QWQ 阅读全文
posted @ 2017-02-13 20:58 sigongzi 阅读(185) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2016-09-25 14:37 sigongzi 阅读(7) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2016-08-24 14:04 sigongzi 阅读(8) 评论(0) 推荐(0)