贪心
AcerMo
一只辣鸡大学生
展开
-
[Vjudge]Radar Installation
贪心好题题目大意海里有一些岛,你可以在岸边放雷达,用最少的雷达覆盖所有岛解题思路我们可以先将题目从二维降维至一维,显然能够覆盖岛的条件是雷达位于坐标区间[x0,x1],其中x0x1分别是能够覆盖这个岛的两个极限点,在这两点之间的点都可以覆盖这个岛,所以我们可以将小岛投影到岸上,问题就变成了用最少的点,使得每个区间内都有至少一个点这就是一个比较经典的贪心思路了,我们将点设在一个区间的右端点一定优于设在左端点,因为左端点之前的点都被覆盖过,而不设在右端点那么会有一段区间是浪费掉的。我们先对所有区间.原创 2021-12-08 20:57:50 · 263 阅读 · 0 评论 -
[Vjudge]卡片游戏
题目描述如图贪心+STL应用基本思路最直观的想法,从第一位开始取,比较他和当前已经排好序的部分开头的数字比较,若比这个数字小,那么一定是放到左边作为新的开头,若是比这个数字大,那么一定放在右边进一步来讲,得到的最终序列的开头一定是整个原序列中,从右往左数除0以外的最小的数,而这个数后面的数因为都大于这个最小的数,所以一定是顺序插入的,不会再改变顺序,他之前的数还是按照开始直观的想法插入即可,到这个数就放到开头这里我用了STL中deque,双端队列,他是一个可以从头或者尾插入的队列,可以看做是一个.原创 2021-11-26 21:58:58 · 2822 阅读 · 0 评论 -
BZOJ1150&&洛谷P3620 [APIO/CTSC 2007]数据备份
这应该是道贪心题我们不难发现,一个点连电缆肯定是要和他左侧第一个或者右侧第一个连,这样是最优的,但是可能存在a,b,c,d四个点,bc是目前可连得最短边,但是连接ab和cd更优,怎么办呢?我们可以在第一次用掉bc这条边后,将ab+cd-bc作为bc边的新值加入图中,那么之后若ab+cd-bc更优的话,bc这条边就被抵消了然后我们用一个优先队列,按相邻两两之间的距离差排序代码//B...原创 2018-09-02 14:16:27 · 286 阅读 · 0 评论 -
POJ3045Cow Acrobats
毒瘤贪心我们假设我们现在正在处理这个塔中的某一个位置,处理完上一个位置后剩下的总重量为WsumWsumW_{sum},然后考虑两头牛a和b,假如当前层的风险选a比b更优的话,就有Wsum−Wa−Sa<Wsum−Wb−SbWsum−Wa−Sa<Wsum−Wb−SbW_{sum}-W_a-S_aWa+Sa>Wb+SbWa+Sa>Wb+SbW_a+S_a>W_b+S_b,所以...原创 2018-09-17 17:51:54 · 207 阅读 · 0 评论 -
洛谷P3467 [POI2008]PLA-Postering
单调栈不难发现一次性抹掉连续的一层是最优的,举个例子45654,我们先抹掉4,变成01210,肯定是最优的,所以我们就得到了一个优秀的做法,维护一个y的单调栈,每次加入一个新高度,就把高度大于它的弹出去,因为大于他的那些就要单独去覆盖了,这些低的可以用一整张覆盖,然后若当前加入高度于栈顶高度相同,就可以像例子那样一下覆盖一整块,然后我们记录有几个相同的整块就好了代码//By AcerMo...原创 2018-09-17 19:43:44 · 236 阅读 · 0 评论 -
BZOJ2151&&洛谷P1792 [国家集训队]种树
一道贪心好题,不知道大家做没做过BZOJ1150数据备份,和这道题基本上一样一个点能影响以及受影响的位置只有他的前面面一个位置和后面一个位置,然后我们就建了一个双向链表,一旦选了x点,就把x点的前驱和后继标记一下,说明这两个点不能再选,然后我们建一个大根堆,每次取优美值最大的位置,这样贪心不一定是最优的,因为可能存在x,y,z我们贪心的选取了优美值最大的y,导致x,z不能选,但是可能x和z一起...原创 2018-09-13 13:55:42 · 306 阅读 · 0 评论 -
BZOJ5194&&洛谷P4269 [USACO18FEB]Snow Boots G
假装是贪心我们将地砖按照积雪厚度从大到小排序,靴子按照能踩的厚度从大到小排序,然后对于每双靴子,比较它能跑的长度与当前图中最长的连续一段厚度大于它的承受力的长度,若比 连续一段长,则能走完全程,如何找到连续一段?我们用并查集,每次判断当前枚举到的地砖的dep是不是大于靴子的dep,因为两者都是从大到小枚举的,所以当前的都不会对之前产生影响,但是地砖深度 大于当前靴子,那么一定大于后面的靴子,所...原创 2018-09-19 09:53:41 · 301 阅读 · 0 评论 -
BZOJ3043&&洛谷[Poetize6] IncDec Sequence
日常毒瘤不难发现,我们对序列两两做差,得到一个差分数组,有三种情况d[i]=0,i 和i-1相等,d[i]&gt;0,i大于i-1,d[i]&lt;0,i小于i-1,对于第一种情况,显然要更改的话就是一起改,对于第二种情况和第三种情况 ,每次修改一段区间,这一段的d都不会变,所以就相当于在d的一个位置+1,在另一个位置-1,另一个显然的性质就是最后序列一样时,d等于0,然后我们统计一下s1=∑...原创 2018-09-19 11:03:57 · 318 阅读 · 0 评论 -
codeforces867E&&865DBuy low Sell hig
贪心好题我们首先要明确的一个贪心思想就是尽可能的低价买入,高价卖出,这样能获得最大利润,如何实现?我们有两种情况是不能卖出的:第一种是它之前没有比他小的价格 ,那么卖这个 会比之前的优,所以要选择买这个,第二种是它之前的已经操作完了,就是之前没有可以操作的天了,这时也要选择买或不买,但不能卖,于是我们得到了初步想法,维护每天之前的最小值,然后每次比较当前的价格与之前的价格,然后进行操作,然后我...原创 2018-09-20 19:48:28 · 180 阅读 · 0 评论 -
洛谷P3029 [USACO11NOV]牛的阵容Cow Lineup
STL大法好&&双指针大法好双指针是一个玄学的东西总的来说就是用一个变量l指在一个左端点,然后用一个变量r向右扩展直到符合要求的区间的条件为止,这玩意貌似也叫尺取法??这道题数据范围hin大怎么办?用map离散化一下就好了具体实现我们读入的时候,用map记录每个出现的种类,记录总数cnt然后我们需要按下标排个序,然后再开始圈答案然后下面用双指针,从l=1,r=1开始 ...原创 2018-10-02 19:55:06 · 331 阅读 · 0 评论 -
BZOJ1106[POI2007]TET-Tetris Attack立方体大作战
树状数组思路不难发现对于1…2…2…1这种情况来说,先删除2比先删除1更优,也就是说有匹配就删掉肯定比先删掉一个后来的匹配要优,对于12…12先删除哪个对答案的贡献是相通的…1…2…1…2…这样先删除1是最优的,所以思路就明朗了,维护一个点到他上次出现的位置有多少还没被删除的点就好了,然后我们就可以用树状数组维护一下洛谷还要输出方案,真毒瘤代码//By AcerMo#include&...原创 2018-10-18 14:42:04 · 317 阅读 · 0 评论 -
POJ3122 PIE
二分题意你有n个蛋糕,你有m个基友,你们m+1个人要激情分蛋糕,问每个人能均分到的最大面积是多大,一个人的蛋糕只能从一个大蛋糕上割下来做法二分一个最大的rr,最后再乘一个M_PI就行了,验证直接用每个蛋糕的rr/mid下取整,看个数是不是>=m+1代码//By AcerMo#include<cmath>#include<cstdio>#include...原创 2018-10-16 19:06:26 · 223 阅读 · 0 评论 -
POJ 3122 4 Values whose Sum is 0
双指针?题意有四个数集,问你从每个集合里拿一个数出来,总和是0的方案数思路我们n2n^2n2的计算出a+b的值s1,c+d的值s2,然后把s1从小到大排序,s2从大到小排序,然后按顺序枚举s1中的值,发现他在s2中的对应值具有单调性,也就是说,在s1中存在a1,a2,在s2中存在b1,b2,b3,满足a1<a2,b1>b2>b3,若a1+b1>0,那么a2+b1肯定...原创 2018-10-16 20:33:51 · 172 阅读 · 0 评论 -
BZOJ2525&&洛谷P3523 [POI2011]DYN-Dynamite
二分+树上贪心我们通过 二分答案,将问题可以转化成,用不超过m个点,覆盖整张图引用自Po姐/*对于以一个节点为根的子树,有三种状态:0.这棵子树中存在一个选择的点,这个选择的点的贡献还能继续向上传递 1.这棵子树中存在一个未被覆盖的关键点,需要一些选择的点去覆盖他 2.这棵子树中既没有能继续向上传递的选择的点也不存在未覆盖的关键点是不是少了一种状态?如果这棵子树中既存在...原创 2018-08-30 19:32:38 · 213 阅读 · 0 评论 -
BZOJ3893&&洛谷P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver
好像是道暴力,又像道贪心我们不难发现,若一头牛可以追上另一头牛,那么在经过t时间后,能被追上的一定被追他的超过了,所以我们用这个性质,先预处理出每个牛的结束位置,然后依次比较,更新最早的结束点,因为追上就慢了代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#inclu...原创 2018-08-19 10:31:21 · 357 阅读 · 0 评论 -
POJ3069Saruman's Army
贪心好题大体思路是按照右端点排序,每次选最靠前的没有被覆盖的区间的右端点放一个点,自己画画图就会发现非常有道理代码//By AcerMo#include<cmath> #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>usi...原创 2018-08-02 16:19:24 · 123 阅读 · 0 评论 -
CF500B New Year Permutation
贪心题意是你有一个数列,一些位置之间可以互换,问你能得到的最小序列是多少我们发现一个数能换到另一个地方,那么还能换到这个位置能去的地方,所以我们floyd传递闭包,求出所有能换到的地方,然后每位使用它能用的最小的数,已经使用过就后移代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#...原创 2018-07-16 14:28:11 · 222 阅读 · 0 评论 -
BZOJ1620&&洛谷P2920 [USACO08NOV]时间管理Time Management
emm贪心题,但不知道怎么让我搞成了并查集先将数组按结束时间排序,因为肯定先安排靠后的工作,后面处理时冲突会减小很多然后如何并查集乱搞呢?假如下图是一个没有加入任务的时间线{{20,5},{15,4},{12,3},{10,1},{5,2}}这是排好序的数组,左边元素是结束时间开始:20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1加入第一组任务,...原创 2018-07-03 15:40:26 · 338 阅读 · 0 评论 -
CF549B Looksery Party
贪心这题根本没有无解的情况。。。因为所有人都不去也是一种方案。。。那么如何贪呢?我们发现,除了a[i]==0的人,其他人都可以不参加,但是a[i]==0的人认识自己,所以他参加了就可以满足条件,那么相应的他认识的人能接受的信息条数就要减一,然后判断是不是a[k]==0等于就继续更新,然后就没有然后了代码//By AcerMo#include<cmath>#incl...原创 2018-07-16 18:49:47 · 240 阅读 · 0 评论 -
CF578B Or Game
贪心+思路我们很快就能发现,将k个机会分散出去不如集中在最大的数上优,因为x>=2所以每乘一次,当前数的二进制位最高位都至少左移1位,所以我们枚举将这k次机会用在哪个数身上可以取到最大,那么我们可以维护一个前缀或,一个后缀或,枚举到这个数时直接查表取出,然后取max就好了代码//By AcerMo#include<cmath>#include<cstdio...原创 2018-07-16 19:29:52 · 545 阅读 · 0 评论 -
BZOJ4004&&洛谷P3265 [JLOI2015]装备购买
贪心+高斯消元+线性基 求一个线性无关也就是线性基,但要求花费最小,所以用花费贪一下心代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace ...原创 2018-07-16 20:02:30 · 254 阅读 · 0 评论 -
CF708C Centroids
代码//By AcerMo#include<cmath>#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int M=400...原创 2018-07-16 20:24:45 · 286 阅读 · 0 评论 -
CF645E Intellectual Inquiry
贪心代码//By AcerMo#include<cmath>#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>#define lli long long intusing na...原创 2018-07-16 20:47:39 · 313 阅读 · 0 评论 -
BZOJ4198&&洛谷P2168 [NOI2015]荷马史诗
贪心+优先队列每次从堆中挑出权值最小的,权值相同挑trie上深度最深的,怼到一起就行了代码//By AcerMo#include<queue>#include<cmath>#include<cstdio>#include<iostream>#include<algorithm>#define lli long l...原创 2018-07-31 16:50:46 · 248 阅读 · 0 评论 -
BZOJ1034&&洛谷P2587 [ZJOI2008]泡泡堂
挺水的一道贪心,显然的思路肯定是要排序的,然后我们首先肯定是能赢则赢,不能赢就平那么当前最大若能打败对方最大那就肯定要打败,因为排好序,留着只会打败更小当前最小能打败对方最小也肯定要打败,因为他不可能留着打败大的上面两种都不行,就考虑让本方小值去和对方打平手然后最小值的情况只需要给对方求最大就好代码//By AcerMo#include<cmath>#in...原创 2018-07-28 09:55:02 · 203 阅读 · 0 评论 -
BZOJ1045&&洛谷P2512 [HAOI2008]糖果传递
环形均分纸牌一个人最后的状态是sum/n=xi-givei+geti然后将geti-givei看成一个常量bi,那么ans=Σbi,那么我们就是要让它最小然后根据均分纸牌的思路,自然要对他求一个前缀和,然后在前缀里找一个常量使所有数减这个值再求和的ans最小,那就是中位数呗代码//By AcerMo#include<cmath>#include<cstd...原创 2018-07-28 10:26:48 · 251 阅读 · 0 评论 -
纪中OJ 5775【NOIP2008模拟】农夫约的假期
思维题不难发现,这题是求一个最小曼哈顿距离和,之后呢,我们通过"平面上有一堆点,选一个点,使距离和最小,这个点一定是坐标的平均值,类比可得,在曼哈顿距离下,这个点因该是这一堆点的横纵坐标的中间值,然后就大力尝试,结果就A了代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>...原创 2018-08-09 20:01:02 · 533 阅读 · 0 评论 -
纪中OJ 3487NOIP2013模拟联考11】剑与魔法(dragons)
来中山纪念第一次考试就砸了,丢juner啊!这道题是一道贪心,挺简单的。。。我们不难发现我们一定是在保证不超过下一次end的限制的条件下,使收益最多,然而每个事件的rp都是1,那么一定是取收益最多的,那么思路就显然了,在不超过当前限制的条件下取最大的限制-1个事件,还要满足之前的不能变多,所以我们可以用优先队列维护,每到一个end,就将优先队列里的值出队列,直到满足不超过限制,这样一定满足...原创 2018-08-06 16:17:39 · 373 阅读 · 0 评论 -
BZOJ1029&&洛谷P4053 [JSOI2007]建筑抢修
一道贪心的版题,一开始以为是和管理时间一样,但发现,麻袋只有20分,emm,发现按照那个方式贪心不能保证最多,因为可以将一个占时长的替换成两小的,明显更优,那怎么办呢?根据刚刚这个反例,不难发现,我们可以先按照结束时间排序,然后遍历,能修就修,不能修就看看之前修过的有没有占时比当前的长的,因为我们按照结束时间排序,先安排早的,当前有一个 比之前修过的占时短的,而且结束时间晚的,显然更优,然后占时长...原创 2018-08-02 09:34:42 · 195 阅读 · 0 评论 -
CF605A Sorting Railway Cars
贪心,题意是用最少的操作使序列单调上升,操作是将序列中任意一个数放到尾端或首端我们发现,最小操作的意思就是使不动的数尽量多,不动的条件是什么呢?单调上升,也就是LIS但不能是普通的LIS,我们必须使LIS(n)-LIS(n-1)=1,这样才能保证结果正确性,最后我们用n-最长长度就是答案代码//By AcerMo#include<cmath>#include<cstdio&g...原创 2018-07-16 14:24:32 · 224 阅读 · 0 评论