摘要: 嘟嘟嘟 我dp真是太弱了,这么简单dp都不会。 令dp[i]表示前 i 头牛头被遮住了的最低成本。则dp[i] = min{dp[i], dp[j - 1] + c[a[i] - a[j] + 1]} (1 <= j <= i) 然后别忘了预处理后缀最小值。 1 #include<cstdio> 2 阅读全文
posted @ 2018-11-05 17:50 mrclr 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这道题只要树形dp做的熟练的话就能秒(显然我不能)。 令dp[u][0 / 1]表示u所在的子树和u相连的联通块没有/有敌人的最少代价。而且按题中所述,这个联通块只能有1个敌人。 分情况: 若敌人在节点u: 则dp[u][0] = INF,dp[u][1] = Σmin{dp[v][0], 阅读全文
posted @ 2018-11-05 16:55 mrclr 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 如果把毛毛虫的毛都剃下去,那么就是求树的直径。现在加上毛,也可以仿照树的直径树形dp的做法。 在dfs的时候开两个变量,分别维护以u为端点的最长链Max1和次长链Max2,然后像求树的直径那样更新即可。 单开一个dp[u]表示在u是的最长链,这个最长链是包含u及其毛的,而上面的不包括,这样方 阅读全文
posted @ 2018-11-05 15:49 mrclr 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 虽然题面很长,但是静下心来看完后,还是掩盖不了这是一道水体的事实。 发现这是一棵完全二叉树,而且深度只有40。 那么dp[u][l][r]表示到达节点u,有 l 条公路,r条铁路没修。转移方程就是分两种情况递归下去就行啦。 然后中间节点只是用来记录答案的,在叶节点计算。 据说这道题卡空间,但 阅读全文
posted @ 2018-11-05 14:25 mrclr 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这道题可以说是[HNOI2003]消防局的设立的升级版。距离从2改为了d。 辛亏d只有20,这也就是一个切入点。 令f[u][j]表示u四周 j - 1的距离需要被覆盖,g[u][j]表示u可以像四周覆盖 j 的距离。 考虑转移方程,令v为u的其中一个儿子: 1.f[u][j]:直接从v延伸 阅读全文
posted @ 2018-11-05 07:53 mrclr 阅读(199) 评论(0) 推荐(0) 编辑