动态规划
Chiyo小朋友
这个作者很懒,什么都没留下…
展开
-
【洛谷P1095】守望者的逃离
链接第一次知道dp还能分开写。关于这个题,最开始一直没有脱离以前的dp模板,想压到一个dp里,这么做显然会姹紫嫣红。那么就可以考虑将dp分开。首先罗列出状态,即这一秒可以干什么:1.跑17米2.不动,加4点血3.使用大招,跑60米,耗10点血那么,就可以把这三个状态根据是否有血量参与,分成两组处理——1,23 。用贪心的思想来看,在能直接使用大招的情况下,必然使...原创 2018-09-02 21:52:54 · 313 阅读 · 2 评论 -
【洛谷P1064】金明的预算方案
大概。。。逆向思维?链接第一遍想的是按附件处理主件,这样的话可能会买很多个主件。维护的话应该是有办法的,只是不太好搞。于是我们考虑重点维护主件,按主件处理附件,无非就是五种情况。1.不选2.只要主件3.要主件和附件14.要主件和附件25.金明才做选择,我全都要!因为这个题数据构成比较简单,所以结构体处理一波,01背包搞一搞就过了。(我还考虑过跑最长路,真不知...原创 2018-09-03 21:05:24 · 255 阅读 · 2 评论 -
【洛谷P1439】最长公共子序列
链接(N方过百万是lsh的事,和我css有什么关系。)两个序列的最长公共子序列,一定是这个样子的(此处样例,不唯一):然后给映射一下,很容易发现,公共子序列的映射结果一定是上升的。于是乎就把问题转化成了求最长上升子序列。这里有一个log(n)的求法:f[len]表示长度为len的上升子序列的结尾。在dp时,如果大于结尾,就把他加到末尾;如果小于结尾,就在前面二分...原创 2018-09-17 22:55:29 · 242 阅读 · 0 评论 -
【洛谷P1850】换教室
链接首先看题,求什么全局最大值,基本可以确定是用动归。我们先不考虑概率,那么问题转化为:上完N节课消耗的最小体力值是多少。如何转移?对于每个时间段,显然有换课有不换课两种选择,并且一节课的答案只与上一节课的答案有关。可以用 dis [ i ] [ j ] 表示 [ i 教室 ] 到 [ j 教室 ] 的最短路(数据很小,可以预先Floyd处理出来)用 f [ i ] [ 0...原创 2018-10-05 00:38:22 · 280 阅读 · 0 评论 -
【洛谷P1131】时态同步
背景:stu-49不是个好stu,听一下午树形DP毛都不会写。链接显然这是棵树首先声明,我会说两种想法,第一个想法是错误的,第二个想法是正解。第一个:考虑直接从根走,len [ u ] 表示从根到结点u的路径长度,取个max表示 max { dis[u][son[u] };(以上为假式子)这个做法显然是错的,因为我们只处理了根节点,而对于任意一个非根非叶结点,它...原创 2018-10-06 00:37:11 · 351 阅读 · 0 评论