贪心+dp
贪心+dp
好多题都是这个思想, 可以说是非常重要了
思想一: 在不确定序列无法dp的情况下, 我们不妨先假设序列已经选定, 而利用贪心使序列达到最优解, 从而先进行贪心排序, 在进行dp选出序列
思想二:
最优解一定满足上一个状态在某
Problem 1
n 座楼房,立于城中。
第 i 座楼,高度 \(h_i\) 。
你需要一开始选择一座楼,开始跳楼。在第 座楼准备跳楼需要 的花费。每次可以跳到任何一个还没有跳过的楼上去。但跳楼是有代价的,每次跳到另外一座楼的代价是两座楼高度的差的绝对值,最后一次从楼上跳到地面上不需要代价(只能跳到地上一次)。求在代价不超过 T 的情况下,最多跳几次楼。(一座楼只能跳一次,且每次跳楼都要计算准备的花费)
发现如果向高处跳, 又向下跳, 肯定不优, 所以不妨认为他是从下一直向上的
所以按高度排序
Problem 2
有n个物品, 价值\(v_i\) , 体积\(t_i\) , 还有每单位时间价值会消失\(l_i\) 的价值
最大化价值和
第一眼斜率优化, 但还是不好干
尝试贪心确定顺序,使用邻项交换法
v1 - T * l1 + v2 - (T + t1) * l2 > v2 - T * l2 + v1 - (T + t2) * l1
-t1 * l2 > -t2 * l1
l1 / t1 > l2 / t2
所以sort一下在\(n^2\) dp即可
Problem 3
Coffee 收藏着N 个蛋糕种子。第 i 个蛋糕种子需要在室内培育连续 Pi 天才能长成幼苗,之后将它移栽到室外,再经过 Qi 天后就会结出一个美味度为 Ri 的蛋糕。移栽蛋糕苗、为室外的蛋糕浇水以及收取成熟的蛋糕花费的时间对于 Coffee 来说可以忽略不计,但由于长成幼苗前的蛋糕比较娇嫩,照顾起来也更麻烦,Coffee 每天最多只会照顾一棵蛋糕幼苗。
更具体地,如果 Coffee 在第 t0 天开始室内培育第 ii 个蛋糕种子,那么它的室内培育工作会占用 Coffee 第t0,t0+1,…,t0+Pi−1 天,并会在 t0+Pi+Qi−1 天结出蛋糕。在第 t0,t0+1,…,t0+Pi−1 天,Coffee 不会开始或同时培养其他种子。
Coffee 希望在 Kate 生日时,送给 Kate 的蛋糕们的美味度总和尽量大。也就是说,在接下来的 T 天内,Kate 最多能收获蛋糕的美味度总和最大是多少?注意,即使一个蛋糕苗在第 T 天前已经被移出了室外,只要它在 Kate 的生日前没能结出蛋糕,它的美味度就不会被计算到总美味度中。
q大的安排在前面肯定更优,按q排序, 然后背包就行了
Problem 4
一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯。即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口。
对于每一个小矮人,我们知道他从脚到肩膀的高度Ai,并且他的胳膊长度为Bi。陷阱深度为H。
如果我 们利用矮人1,矮人2,矮人3,。。。矮人k搭一个梯子,满足A1+A2+A3+....+Ak+Bk>=H,那么矮人k就可以离开陷阱逃跑了,一 旦一个矮人逃跑了,他就不能再搭人梯了。
我们希望尽可能多的小矮人逃跑, 问最多可以使多少个小矮人逃跑。
首先贪心按身长加手长排序, 也就是让最难出去的先出去
但也有可能有人手短身子长, 那他奉献自己可能更优
所以在加个背包dp