贪心
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
luogu1970【2013提高】花匠(DP/贪心)
求最长抖动序列。首先很直白的dp:令f[i][1]表示以i为结尾,且降序到达a[i]的最长抖动序列长度;令f[i][0]表示以i为结尾,且升序到达a[i]的最长抖动序列长度。则有如下递推公式: f[i][0]=max{f[j][1]}+1,1≤j<i且h[j]<h[i]f[i][0]=max\{f[j][1]\}+1,1≤j<i且h[j]<h[i] f[i][1]=max{f[j][0]}+1原创 2017-07-29 15:02:19 · 330 阅读 · 0 评论 -
P1095 守望者的逃离【2007普及】(贪心)
说实话我都有点分不清这是贪心还是dp了。。。说dp吧连个状态都没有。。。还是算他贪心吧。。。假设有两个人一起逃跑,一个只run,一个只blink(没蓝了就停下回蓝),如果blink大于run了,run就拿过blink来接着跑。。所以run就是t0时跑的最远距离了。原创 2017-07-31 15:15:21 · 417 阅读 · 0 评论 -
bzoj1899 [Zjoi2004]Lunch 午餐(dp)
首先不难证明吃饭慢的人一定要先打饭。(吃饭快的排在他前面,那只会使最后所有人吃完饭的时间更长)因此,我们先以吃饭时间由大到小排序,这样就可以只用排队时间来表示状态了。f[i][j]表示前i个人在1号口打饭排队所花的时间为j时所有人吃完饭的最小时间,sum[i]为排队时间的前缀和,则在2号口打饭排队所花时间为sum[i]-j.对于第i个人,无非两种决策: 1.在1号口打饭,则f[i][j]=max{原创 2017-08-16 19:53:02 · 391 阅读 · 0 评论 -
bzoj1831 [AHOI2008]逆序对(dp)
设f[i][j]表示第i个空缺填j,前i个空缺产生的逆序对个数的最小值,然而我们发现这样无法进行转移。。因为不知道前面几个空缺都填了什么。然后我们机智的猜想:让空缺填的数单调不降,两两空缺之间均不构成新的逆序对。我们来证明一下:对于两个空位a和b,分别填入数x和y,且x< y。 如果我们交换x和y,会有如下性质: 1.[1,a-1]和[b+1,n]中的数与x y构成的逆序对数不变。 2.[a+原创 2017-08-16 21:37:50 · 291 阅读 · 0 评论 -
bzoj1334 [Baltic2008]Elect(贪心+背包dp)
首先根据他的描述,为了保证合法,我们往不到n/2个人的组合中加比这些党的最少人数都少的人进去超过了n/2则一定合法。即我们把n个党按人数从大到小排序,进行01背包,看最多能装多少。(注意只能从n/2及以下转移) tips:我一开始脑残的加了剪枝。。我也很迷。原创 2017-08-17 22:04:55 · 543 阅读 · 0 评论 -
Codeforces Round #428
CF839A Arya and Bran(模拟)CF839B Game of the Rows(贪心)CF839C Journey(树+概率)原创 2017-08-13 12:35:34 · 318 阅读 · 0 评论 -
Codeforces Round #429
CF841A Generous Kefa(模拟)CF841B Godsend(博弈+数学)CF840A Leha and Function(贪心+组合数学)原创 2017-08-19 22:02:34 · 303 阅读 · 0 评论 -
hdu6119 2017"百度之星"初赛(B)1006小小粉丝度度熊(贪心)
考时瞎搞yy出来了。。。好像叫什么尺取法??我觉得就是枚举。。首先区间可能有重叠,所以我们预处理,把能合在一起的提前合在一起,这样我们就只剩一堆不相交的区间了,然后开始枚举。。不断往右延伸,能填坑就填,填不了就删左边。。每次都更新一下答案,应该是O(nlogn)O(nlogn)的,复杂度居然体现在sort上,可怕。。。原创 2017-08-13 21:25:37 · 390 阅读 · 0 评论 -
poj2392 Space Elevator(多重背包)
n种砖头,每种砖头还有最高高度限制和数量限制。把所有砖头按最高高度从小到大排序,然后就可以直接多重背包了。原创 2017-08-06 21:37:11 · 285 阅读 · 0 评论 -
luogu1525【2010提高】关押罪犯(贪心+并查集)
首先按怒气值从大到小排序,我们贪心的尽量让怒气值最大的两人不在一起。 直到没有办法了,两人只能在一起时,输出答案。 怎么维护呢?类似团伙那道题,让我的敌人和我的敌人在一起。直到两者已经在一个集合中时,输出答案。也可以像食物链那道题,做一个带权并查集,d[i]=0表示i与fa[i]不是敌人,1表示i与fa[i]是敌人。原创 2017-09-05 11:25:40 · 357 阅读 · 0 评论 -
CF500B New Year Permutation (贪心+并查集)
把能互相交换位置的都合并成一个集合,用并查集维护。每一个集合中的位置都是可以两两互换的,所以我们对于每一个集合的位置从小到大排列,这些位置上的数也从小到大排列,一一对应,保证小数尽量在前面,即为最优。原创 2017-09-05 21:30:22 · 328 阅读 · 0 评论 -
NOIP模拟9.14
2011提高D2 A.计算系数,组合数求法还是没看。。用的dp也是醉了。因为输入的a,b没取余,丢掉了20分。值得注意。 B.聪明的质检员。二分答案+线段树nlog^2n,70分,T了6个点。线段树再写得好一点可以拿到90分。正解 二分答案+前缀和。是啊,线段树都想到每次重建一颗了,怎么就想不到每次重新统计前缀和呢。。。 C.观光公交。贪心+递推。考时只拿到了部分分10分。贪心的大体思路是对的原创 2017-09-14 22:24:38 · 253 阅读 · 0 评论 -
CF516B Drazil and Tiles(拓扑排序)
预处理出每个 . 邻近的 . 有多少个,即有几种方法覆盖这个 . 。然后用类似拓扑排序的方法,每次把只有一种方法覆盖的点覆盖,并更新临近的点。如果最后还剩下了 . ,说明无法完全覆盖,或者方案不止一个。原创 2017-09-15 10:14:52 · 1155 阅读 · 0 评论 -
bzoj1821 [JSOI2010]Group 部落划分(贪心+并查集)
我们贪心的每次消灭最小边,用并查集维护有几个连通块,减到k个时就输出。原创 2017-09-26 08:08:59 · 367 阅读 · 0 评论 -
NOIP模拟9.17(TYVJ NOIP2017模拟赛D2)
TYVJ NOIP2017模拟赛D2T1 天天寄快递T2.天天和不可描述T3.罪犯分组原创 2017-09-18 11:42:25 · 614 阅读 · 0 评论 -
Codeforces Round #434
CF858A k-rounding(数论)CF858B Which floor?(暴力)CF858C Did you mean...(贪心)原创 2017-09-18 14:24:49 · 610 阅读 · 0 评论 -
Codeforces Round #433
CF854A Fraction(gcd/数学)CF854B Maxim Buys an Apartment(思路)CF853A Planning(贪心+优先队列)原创 2017-09-06 22:37:41 · 353 阅读 · 0 评论 -
Codeforces Round #431
CF849A Odds and Ends(贪心)CF848A From Y to Y(暴力CF849B Tell Your World(模拟)原创 2017-09-02 15:24:20 · 272 阅读 · 0 评论 -
bzoj3714 [PA2014]Kuglarz(贪心+并查集)
显然如果要知道所有球的位置,需要知道所有的前缀和的奇偶性。而我们知道了x到y的奇偶性,就是知道了sum[y]-sum[x-1]的奇偶性,我们可以贪心的每次把花费最小的一次询问问了,然后把知道的两个sum合并到一个集合,就像建最小生成树那样。原创 2017-09-28 10:00:10 · 574 阅读 · 0 评论 -
bzoj4010 [HNOI2015]菜肴制作(拓扑排序+贪心)
一上来我们考虑正着贪心,发现不太正确。。。于是反着建图,反着贪心,也就是说,反过来之后,入度不为0的点一定不能最后做,我们在入度为0的点中选一个最大的搁在最后,让更小的更有机会放在前面。原创 2017-09-20 16:34:20 · 417 阅读 · 0 评论 -
CF272C Dima and Staircase(线段树/贪心)
线段树直接维护区间最大值即可。或者可以发现,最大值只可能出现在最左端或最右端,贪心解决。原创 2017-10-07 22:31:43 · 337 阅读 · 0 评论 -
CF276C Little Girl and Maximum Sum(贪心+差分)
统计每个点被加的次数(区间加,差分+前缀和即可),然后贪心地,让被加次数多的尽量大。(CF以前还有这种水题的?(捂脸逃 )原创 2017-10-08 13:41:54 · 432 阅读 · 0 评论 -
Codeforces Round #441
CF876A Trip For Meal(贪心水题)原创 2017-10-17 21:09:24 · 333 阅读 · 0 评论 -
bzoj4069 [Apio2015]巴厘岛的雕塑(贪心+dp+位运算)
把n个数分成k部分,使得每部分的和的按位或最小。我们考虑答案的最大可能值,我们贪心的从高到低枚举二进制下的每一位,为0最好,而为0的条件是要求分成的所有和的这一位上都是0,我们可以用dp去解决这个问题。(同类的问题还有求按位与最大,思路基本相同,贪心的判断此位能否为1,位运算求极值大概总会用这种套路思考吧). dp的具体细节,对于一般的数据,a<=k<=b,我们用f[i][j]表示前i个数,分成j原创 2017-09-22 16:39:28 · 336 阅读 · 0 评论 -
bzoj1560 [JSOI2009]火星藏宝图(dp+贪心)
首先朴素的dp很好想,dp[i]表示前i个点的最大收益,则dp[i]=max[dp[j]+dis(j,i)|j可以到i},给这n个点排个序就是O(n^2)的dp了,然而过不了。考虑优化,状态数O(n)不可能在优化了,m为1000,O(m)的转移是可以接受的。我们玩一下之后发现,若x到i之间有一个合法的y存在,则(x->y->i)的走法一定比(x->i)的走法要优,因此我们不必从x转移。其实也就是我们原创 2017-10-19 20:30:18 · 313 阅读 · 0 评论 -
NOIP模拟9.27
2013提高D1 A.转圈游戏(快速幂)AC B.火柴人排队(树状数组求逆序对)AC C.货车运输(贪心+并查集+树上倍增)AC原创 2017-09-27 11:31:51 · 352 阅读 · 0 评论 -
CF777E Hanoi Factory(贪心/dp+线段树)
首先按外径从大到小排序,外径相同时按内径从大到小排序。这样的话我们只要按顺序选取,就已经满足了第一个条件。我们考虑第二个条件,要求ai< bj,我们显然只关心最上面(也就是最后选取的)的内径,只要我的外径比他大,我就可以放上去。 因此考虑贪心,按顺序选取,设上一个为x,当前的为y。如果ax>=by,则当前这个不能放上去,易知,后面的也不再可能放上去(b是越来越小的),因此有x的就只能摞这么高了,更原创 2017-10-06 15:28:57 · 471 阅读 · 0 评论 -
NOIP模拟9.28
2013提高D2 A.积木大赛(模拟+递归+st表)AC B.花匠(贪心)AC C.华容道(bfs+spfa)40.搜索手残写挂,本来有70分的。原创 2017-09-28 20:51:31 · 278 阅读 · 0 评论 -
NOIP模拟9.21
2012提高D2 A.同余方程。扩展欧几里得算法求逆元。写了个暴力60分。 B.借教室。线段树写错,25分。线段树本来可以拿到90分。。正解是二分答案+前缀和 C.爆0.写的暴力一堆错。。可能不在状态吧。本来暴力可以拿到30左右。。正解是二分答案+贪心+倍增。真心不好想,不好写。原创 2017-09-23 16:21:04 · 250 阅读 · 0 评论 -
NOIP模拟9.20
2012提高D1 A.Vigenère 密码(模拟)AC B.国王游戏(贪心+高精)没写高精60. C.开车旅行(模拟+倍增+set)暴力了70. C预处理要用到set,有些麻烦。倍增时把两人各走一步看做一整步,最后要特判A还能走一步,而B不能的情况。原创 2017-09-20 15:58:58 · 284 阅读 · 0 评论 -
luogu3933 Chtholly Nota Seniorious(二分答案+贪心)
这题我哪会啊。。。让最大值最小,很显然的想到了二分答案。怎么解决是否合法呢?其实合法的情况,如果左上角为红色的话,就是每行的红色的个数是单调的即可。我们还贪心的想,应该让最大值和最小值不在一块内。因此我们假定最大值mx在红色块内,最小值mn在蓝色块内,这次二分判定的答案为x。假设红色块在左上角,则我们逐行贪心的选择尽量多的合法的(即>=mx-x的),这样留给蓝色的不合法情况一定不会更多。为了让分块合原创 2017-10-29 12:23:37 · 659 阅读 · 0 评论 -
CF402D Upgrading Array(贪心+数学+线性素数筛)
先预处理出g[i]表示a[1]…a[i]的gcd,我们贪心的发现,肯定是从后往前做,这样不会影响前面。每次我们分解这个gcd,看他是负贡献还是正贡献,决定是不是要除掉它。这样的操作之后,我们分解每一个剩下的数,统计答案即可。用线性素数筛提前把素数筛出来,复杂度应该是小于O(n sqrt(1e9))的。原创 2017-10-15 15:23:21 · 389 阅读 · 0 评论 -
bzoj1196 [HNOI2006]公路修建问题(二分答案+kruskal/贪心)
最大值最小,二分答案一波,然后去判定,优先选择一级公路,再选二级公路。贪心想不清楚,好像也能做。原创 2017-11-09 17:23:00 · 352 阅读 · 0 评论 -
Codeforces Round #440
CF872A Search for Pretty Integers(贪心)CF872B Maximum of Maximums of Minimums(贪心)CF871A Maximum splitting(贪心+数学)原创 2017-10-15 22:04:14 · 226 阅读 · 0 评论 -
NOIP模拟10.24
2015提高D1 A.神奇的幻方。 这不几年初赛题么。。AC B.信息传递。 这题卡了许久。。大概是老了。。%%%elijahqi C.斗地主。 超级大爆搜,先把顺子都搜索枚举了,然后剩下的牌贪心。原创 2017-10-24 11:18:15 · 261 阅读 · 0 评论 -
NOIP模拟10.24 R2
2015提高D2 A.跳石头。二分答案+贪心 AC B.子串。dp。写过一遍的。。结果用了另一种方法写过的。。AC C.运输计划。拿了60的暴力分。正解待更新。 upd:C正解看这里:传送门原创 2017-10-24 17:33:29 · 307 阅读 · 0 评论 -
NOIP2004提高组
2004提高 A.津津的储蓄计划(模拟) B.合并果子(贪心+优先队列) C.合唱队形(dp) D.虫食算(搜索+数学)原创 2017-11-10 21:33:43 · 326 阅读 · 0 评论 -
NOIP模拟10.25
Poetize12 A.seal 模拟+贪心 B.energy 树形dp C.journey 瞎搞。。。优化暴力即可。原创 2017-10-25 17:16:36 · 310 阅读 · 0 评论 -
NOIP2005提高组
2005提高 A.谁拿了最多奖学金(模拟) B.过河(dp,玄学系列) 题解 C.篝火晚会(模拟+贪心) 这题神啊。首先把目标环模拟出来,当前环与目标环有多少个不匹配的就是需要多少代价。因为是环,所以我们要循环n次去比较,复杂度O(n^2),gg。我们可以先处理出每个位置上的数与它的正确位置差了多少个,即需要转几下,然后枚举转几下,取能正确匹配最多的。注意还要把目标环反过来做一次。(可以想象原创 2017-11-17 17:25:48 · 457 阅读 · 0 评论 -
loj6003「网络流 24 题」魔术球(最小路径覆盖/打表贪心)
二分答案+最小路径覆盖。把每一根柱子看作一条路径,和为完全平方数的建边,从小数向大数建。看最少几条路径覆盖,二分答案。或者也可以直接打表发现规律,每次优先往有数的柱子上放最好。直到放不下为止。原创 2017-12-08 21:42:53 · 312 阅读 · 0 评论