贪心
文章平均质量分 71
yzyyylx
这个作者很懒,什么都没留下…
展开
-
国王游戏证明
假设我们现在已经有了一个顺序,大臣左手的数字为A[1]A[1]A[1] ~ A[n]A[n]A[n],右手的数字为B[1]B[1]B[1] ~ B[n]B[n]B[n],国王则为A[0],B[0]A[0],B[0]A[0],B[0]现在我们交换位置为i,i+1i,i+1i,i+1两位大臣之间的位置交换前,两人的收益分别为1B[i]∏j=0i−1A[j]\frac{1}{B[i]}{\prod_{j=0}^{i-1}A[j]}B[i]1∏j=0i−1A[j]和A[i]B[i+1]∏j=0i−1A[j]原创 2022-03-17 23:39:31 · 213 阅读 · 0 评论 -
BZOJ4622 [NOI 2003] 智破连环阵
题面题意有n个点需要被覆盖,你有m个半径为k的圆,每个圆覆盖的点是圆内(包括边界)编号连续的一些点,且每个圆只能使用一次,问至少要选择几个圆才能覆盖所有点。做法这个问题可以拆成两个子问题: 1.将n个点根据编号拆成k段。 2.判断m个圆与这k段的最大匹配是否是k。 可以发现第二个子问题可以用二分图的最大匹配轻松求解,而对于第一个子问题只能用搜索。 但是搜索的复杂度最...原创 2018-08-30 16:04:51 · 448 阅读 · 0 评论 -
CodeForces - 1042F Leaf Sets
#题面#题意给出一棵树,要求将其叶子分成几个集合,要求每个集合中叶子两两之间的距离不大于k,求至少要将其分成几个集合。#做法因为n很大,所以考虑贪心。首先dfs,我们可以自下而上逐个子树考虑,对于一个子树,可以将其拆成几条链,可以将较短的几条链合并在一起,而长的链独自一个集合,然后其父节点与短链集合相连,这样可以保证答案较优。具体见代码,比较难描述。#代码#include<i...原创 2018-09-18 07:58:04 · 689 阅读 · 1 评论 -
codeforces 1070J 2018-2019 ICPC,NEERC,Southern Subregional Contest Streets and Avenues in Berhattan
题面题意有mmm条横线,nnn条竖线,共有(n∗m)(n*m)(n∗m)个交叉点,k(k>=m+n)k(k>=m+n)k(k>=m+n)个名字(每个名字是一个大写字母),现在要给这(m+n)(m+n)(m+n)条线命名,若构成一个交叉点的两条直线的名字相同,则这个交叉点不美丽,问不美丽的交叉点的最少个数是多少。做法首先任意一条横线与任意一条竖线都会有一个交...原创 2018-10-24 18:31:49 · 298 阅读 · 0 评论 -
Codeforces 1091F New Year and the Mallard Expedition
题面题意有一段路要走,路一共有三种类型:草地,水,岩石,在草上可以步行,在水中可以游泳,可以在任何地形上飞,已知每走过1m要花5s但能得到1点能量,每游过1m要花3s但能得到1点能量,每飞过1m要花1s且要耗费1点能量,问走完这段路最少要花所少时间。做法首先考虑最简单的走法:在草地上步行,在水中游泳,在石头上飞。这样就会遇到以下两种情况:1.能量不足,无法飞过岩石。这种情况处理起来相对简...原创 2018-12-31 10:55:24 · 329 阅读 · 0 评论 -
[NOI2017]蔬菜
题面题意有n种蔬菜,每种蔬菜有c[i]的单位,每单位可以获得收益a[i],第一次卖出它可以额外获利s[i],每天会有x[i]个单位过期,每天最多卖出m个单位的蔬菜,k次询问,每次询问给出一个数p,询问用p天最多可以获利多少。做法首先考虑一次询问,则可以将时间倒序来看,这样蔬菜过期就可以看作是这一天将一部分的蔬菜运来,第一次卖也同样额外获利s,然后用优先队列贪心维护最大的m个即可。现在考虑...原创 2019-02-01 09:28:43 · 332 阅读 · 0 评论 -
2015 ACM-ICPC World Finals G - Pipe Stream
题面做法我们可以发现从v2-t开始,每减去t比较一次,直到L,就可以得到答案。考虑建出二分查找树,发现每一个速度都有一个时间上限(如果超过这个时间就无法比较),这个时间就以为着它在二分树上的最大深度,可以发现每个速度的最大观察深度是一个分段函数,可以逐层考虑这棵二分树,计算它每层可以将答案精确到几个区间中,然后减掉这一层必须确定的速度(若节点数不够,则说明无解),逐层枚举,最后的深度即为答案...原创 2019-02-21 18:10:22 · 453 阅读 · 0 评论 -
codeforces335F Buy One, Get One Free
题面题意你要买n个东西,当你买了一个价格为x的东西时,可以让商店免费赠送你一个价格严格小于x的东西,则你买下这n个东西至少要花多少钱。做法n很大,考虑贪心。首先根据商品的代价从大到小排序,价格相同的商品一起考虑。可以把所有赠送的商品的价格都放到一个小根堆里,当我们考虑价格为x的商品时,记一共有sum个商品的价格比x大,首先将可以送的商品直接赠送(共有min(sum−2∗pq.size...原创 2019-03-03 16:20:22 · 942 阅读 · 0 评论 -
codeforces1120E The very same Munchhausen
题面题意给出一个正整数a,问是否存在一个正整数n,满足S(a∗n)=S(n)/aS(a*n)=S(n)/aS(a∗n)=S(n)/a且n<=10500000n<=10^{500000}n<=10500000S(x)S(x)S(x)表示x各个数位的数字和。做法首先可以考虑把n分成多个部分,使n形如b1+b_1+b1+"0000"+b2++b_2++b2...原创 2019-03-06 14:57:58 · 770 阅读 · 0 评论 -
codeforces949D Curfew
题面题意一条直线上有n个寝室,每个寝室中有aia_iai个人,现在有两个宿管分别从左右两边向中间走,每个单位的时间查一个寝室,若人数不足b个,则会记录,最中间的寝室归左边的宿管,现在每个人每个单位的时间可以跑d个寝室,则两个宿管记录下的寝室数量的较大值的最小值是多少。做法这题有一个很棒的贪心,可以从左向右扫(直到中间),如果可以到达这个寝室的人数(在宿管来之前)大于等于b,就让这些人过来...原创 2019-03-19 16:00:51 · 1953 阅读 · 0 评论 -
codeforces1158D Winding polygonal line
题面题意在平面上有n个点,现在给你一个长度为n-2的由LR构成的序列,要求你求出一个排列,使得按照排列在点之间连线后组成的路径中没有相交的线段,而且n-2个拐点的转弯方向与给出的序列相同.做法可以先在这n个点构成的凸包上任选一点作为起点,然后若第一个拐点的方向是向左,则可以在剩下n-1个点中选择一个点,使得无论第三个点选什么都满足第一个拐点是向左拐的,不难发现这个点一定存在,可以用差积求出...原创 2019-05-19 16:37:25 · 611 阅读 · 0 评论 -
CodeForces 521D Shop
题面题意给出n个数,有m种操作,操作分为三类: 1.将第i个数改成某个数 2.将第i个数加上某个数 3.将第i个数乘上某个数 每种操作只能做一次,从中选择至多k个,求操作后的数的乘积的最大值。做法贪心,首先操作顺序肯定是:修改(可以看作加,且至多一次),加,乘。 难点在于要加多少个数在开始乘,正确处理方式是将加转化为乘,a+b就相当于a*(a+b/a),而加法的顺...原创 2018-08-08 12:40:09 · 309 阅读 · 0 评论 -
AtCoder 2004 Anticube
题面题意给出n个数,求其中最多选择几个数使选择的数中任意选两个数,它们的乘积都不是立方数。做法首先思路很好想,将每个数根据质因数的个数模3分组,也就是除以它因数中的立方数使它的因数中不含有立方数,然后再顺便算出与它相乘后得到立方数的最小数,然后存入map,对于每个数(1要特判)在它和与它相乘得立方数的最小数之间选择出现次数较多的即可。 难点在于分解质因数,如果暴枚质数,暴...原创 2018-08-06 19:06:30 · 250 阅读 · 1 评论 -
Boxes And Balls CodeForces - 884D
题面题意 一开始有一个数,每次可以将一个数分成2或3组,并分别放入一组,代价为这n个数的大小,使最后有n组,并给出每组的数字大小方法 可以看作将n个数合并,每次可以合并2个或3个,代价为几个数的和,最后合并成一个数. 从贪心的角度来看,3个3个合并最优,因为每次可以减少两个数,事实上在奇数个数时确实如此,有偶数个数时,因为最后只剩下了两个数,代价不是最小的,故可以先加一项0,再当奇数原创 2017-11-05 18:08:48 · 391 阅读 · 0 评论 -
洛谷 P1325 雷达安装
题面题意 x轴上方上给出n个点,在x轴上至少要做几个半径为r的圆使它们全部被覆盖.方法 首先先算出每个点要被覆盖所需要的圆的圆心范围,这样问题就转化为了在n个区间中至少取几个点,使每一个区间中都有至少一个点. 方法是贪心,一开始的写法是根据左端点排序,每次若该区间中无点,则取当前的右端点为新的圆心,但因为无法保证右端点一定被覆盖,因而贪心错误.hack数据:2个区间,(1,4),(2原创 2018-01-15 18:45:06 · 243 阅读 · 0 评论 -
codeforces 913C Party Lemonade
题面题意有n种购买方法,每种购买方法是买(1 << i)个花a[i]的钱,你要买至少m个,输出最小花费.分析首先想到的就是dp,dp[i]表示买i个所需要的最少金钱,但因m,n<=1e9而放弃. 这题的做法是贪心,首先算出(1 << i)个物品所需要的最少钱币,用较小的购买方法去更新,之后将其转化为二进制,每一位均用之前处理出来的数去更新. 但...原创 2018-01-09 20:53:02 · 596 阅读 · 0 评论 -
CodeForces 913 E. Logical Expression
题面题意 给出x=1111B,y=110011B,z=1010101B,输出一个由x,y,z组成的字符串使其结果为给出的数,且最短,若长度相同,则输出字典序最小的一个.方法 首先按符号的优先级来划分等级: 0 – (),! 1 – & 2 – | dp[i][j]表示优先级为i,值为j时的最优表达式. 因此,dp[0][x]=x,dp[0][y]=y,dp[0原创 2018-01-10 15:17:06 · 464 阅读 · 0 评论 -
洛谷 P3523 [POI2011]DYN-Dynamite
题面题意 给出一棵树,树上有一些关键点,现在你最多选择m个点,使所有关键点到这些你选择的点的最小距离中的最大值最小.做法 一开始想到的是树形dp,但因为数据过大,且处理麻烦. 正确做法是先二分答案,再用贪心的思想来检验,但记录仍有麻烦 记录时每个点记录两个值,一个是离他最远的并且不在当前选择的点的覆盖范围内的点与他之间的距离,一个是离它最近的已选择的点距他的距离. 转移时原创 2018-02-09 16:11:40 · 304 阅读 · 0 评论 -
洛谷 P2765 魔术球问题
题面题意有n个柱子,编号为1,2…….的小环,要将它们依次套在环上,要求直接接触的两小球的和为完全平方数,那么最多可以套几个小球。做法首先可以贪心,如果可以套在其他小球上,则套在其他小球上,反之,套在柱子上,直到没有多余柱子,可以证明这是对的,但我觉得还是网络流的做法比较重要。 因为要依次取小球,那么当答案为ans时,编号为1-ans的小球都被取走,我们可以用类似于洛谷 P1251 餐巾计划问题的原创 2018-03-12 23:49:25 · 307 阅读 · 0 评论 -
bzoj 1863 [Zjoi2006]trouble 皇帝的烦恼
题面题意现在要造k种东西分给围成一个圈的人,每个人要a[i]个,要求相邻的两人分到的东西的种类完全不同,求k最小值.做法如果是链则答案为相邻两数和的最大值,但因为是环,所以最后一人对第一个人有影响,也就不能简单地取最大值. 可以贪心地想,另第一个人分到的东西种类成为特殊物品,要使1和n相同的数为0,就要求第n个人特殊物品最少,就要求第n-1个人分到的特殊物品数最多,第n-2个人分到的最少……这样就原创 2018-03-26 13:27:08 · 260 阅读 · 0 评论 -
股神小L 2016Vijos省选集训 day1
题面小L厌倦了算法竞赛,希望到股市里一展身手。他凭借自己还行的计算机功底和可以的智商,成功建立一个模型预测了一支股票接下来n天的价格。我们把这支股票第i天的价格称为a_i。在接下来n天里,每一天小L可以选择花费a_i买入一股或者卖出一股从而获得a_i元收入。 当然小L卖出股票的时候,自己的账户上必须要有至少一股的剩余。现在小L希望知道,在n天过去之后,采取最优策略的情况下自己最多赚到多少钱。注意小原创 2018-04-03 13:25:54 · 573 阅读 · 1 评论 -
Codeforces 913D - Too Easy Problems
题面题意给出n道题目,每个题目有一个a,一个b,需要b时间来完成,并且题目总量小于等于a时,此题有效,一题一分,输出用t时间得到的最高分以及做题方案.做法因为每一题的分值一样,因而可以用贪心来做,先将所有题目按照a从高到低排序(这样排序则扫到后面不需要考虑题目总量是否超过a),之后维护一个按时间排序的大根堆和size,sum记录此时做题数量和花时间的总和,按之前的排序来考虑,每...原创 2018-01-10 09:25:28 · 505 阅读 · 0 评论 -
codeforces 1009G Allowed Letters
题面题意给出一个字符串(最多包含 a-f 6个字母),每个位置也都给出一个字符集,现在要求改变其排列的顺序,使其每个位置的字符否是给出该位置上字符集中的一个,输出字典序最小的合法字符串。做法首先想到的肯定是一个一个字符贪心的加入,问题就在于如何判断将一些字符放入剩下的位置,是否存在合法方案。 判断方法是这样的: 枚举所有字符集(2^6个),然后若存在一个字符集,其中还未...原创 2018-07-18 19:01:55 · 436 阅读 · 0 评论 -
Tian Ji -- The Horse Racing HDU - 1052 (贪心,dp)
题面题意 给出长度为n的两串序列,两两匹配,第一串中的大得200分,小扣200分,平局,不得分,输出最大分数方法 如果仅用单一的贪心: 平局时,出最大的数: 反例如下 2 1 3 2 3 答案是0,但用贪心将输出-200 平局时出最小的数: 反例如下 3 1 2 3 1 2 3 正确答案是200,但却会输出0原创 2017-10-18 18:17:01 · 248 阅读 · 0 评论