动态规划
文章平均质量分 82
kkkkahlua
这个作者很懒,什么都没留下…
展开
-
hdu 1505 1506 2870 dp小礼包
题目链接 思路: 读入的时候先处理一下,使得 map[i][j] 记录的是 第 i 行中 连续到第 j 列有多少个 F. 就样例而言 R F F F F F F F F F F F R R R F F F F F F F F F F F F F F F 可以被处理为 0 1 2 3 4 5 1 2 3 4 5 6 0 0 0 1 2 3 1 2 3 4 5 6原创 2016-10-12 22:01:33 · 546 阅读 · 0 评论 -
tyvj 1004 滑雪 dfs + dp
题目链接 /* 先吐槽一发,真的是很容易跑题啊我... 本来是在看压位的知识,一篇博文里面推荐了tyvj里一道题(tyvj 2157)。 于是我就跑去看,一看发现去年刚转C++时写了一道题还没过(写得还特别丑), 所以今天就又捡起来写了一发。之后就跑得更远了...结果到现在还没再看压位...。 */ 题意: 给定一个 n * m 的网格,每个格子有自己的高度,从一个原创 2017-08-09 23:47:00 · 290 阅读 · 0 评论 -
poj 3162 Walking Race 树形dp + 单调队列
题目链接 题意: 给定一棵树,编号为 1 ~ n, 先要求得树上每一点与跟它距离最远的点之间的距离,记为数组 a, 再求得 a 中最长的区间,使得该区间中的元素最大值与最小值的差值不大于给定值 m 其实纯粹是两道题拼起来, 两部分各自的典型例题分别见: 1. hdu 2196 题目链接 blog链接 题意:给定树,求树上每一点与跟它距离最远的点之间的距离 2.原创 2017-07-24 21:26:06 · 370 阅读 · 0 评论 -
hdu 2196 Computer dfs / 树形dp
题目链接 (注(给自己看):写这题时 dfs 的写法还很丑陋(P的痕迹太重...),在之后几篇树形dp的题中会有改观(大概可以称得上)) 题意: 给定一棵树,结点编号为 1 ~ n, 求得树上每一点与跟它距离最远的点之间的距离 思路: 法一: 很快联想到树的直径,因为求树的直径就是: 任取一个点做一次深搜,找到的最远的点必然是树直径的一个端原创 2017-07-24 21:21:47 · 273 阅读 · 0 评论 -
hdu 6082 度度熊与邪恶大魔王 背包
题目链接 题意: 有 n 个怪兽,每个怪兽各有 a[i] 的生命 与 b[i] 的防御; 有 m 种技能(可无限次使用),每种技能有 k[i] 的代价 与 p[i] 的攻击; 第 i 种技能 对 第 j 个怪兽造成的伤害为 攻击 - 防御,即 p[i] - b[j]. 现要求消灭怪兽的最小代价。若不能消灭,输出 -1. 数据范围: 1 1 1 0 0 0原创 2017-08-07 23:11:23 · 362 阅读 · 0 评论 -
usaco2.3 prefix trie树 + dp
题目链接 题意: 给定一些 小 字符串,求得能由这些 小 字符串 拼接成的 大 字符串的 前缀 的最大值。 思路: 题目很直白显然,就是 trie 树 和 动态规划。 其实不用 trie 树也可以...但是怎么说呢 以前从来没写过 trie 树,想写一个试试看,于是就写了。 觉得这个时间还是挺有说服力的吧。(只是写得比较丑陋,请多多包涵 Executin原创 2017-02-26 17:01:47 · 241 阅读 · 0 评论 -
hdu 2660 Accepted Necklace dp / dfs
题目链接 题意: 给出 N 块 石头,从中 至多 选取 k 块(不能重复),重量不得超过 W,求最大价值 思路: 1. dp 三重循环 最外层为 当前考虑的石头,里面两层为 取了多少块 和 重量,这两层先后顺序无所谓,总之都是从大到小 然而题意表述不清,以为一定要选取 k 块石头...事实上是至多。 AC代码如下: #include #include原创 2017-07-13 23:18:04 · 221 阅读 · 0 评论 -
usaco2.3 nocows dp + 失败的递归
题目链接 题目大意: 给出树的节点个数和深度,并且对树的限定是,每个节点的孩子数为 2 或为 0,问有多少种形态不同的数。 思路: 最开始的时候是这样想找规律的 举个例子吧,比如节点数 11, 深度 5 很显然前两层都是满的,剩下节点 11 - 3 = 8,这 8 个要分到 3 层去. 可以是 2 2 4, 2 4 2, 4 2 2. 要求是后一个数 因原创 2017-03-05 22:37:52 · 242 阅读 · 0 评论 -
usaco2.2 subset 01背包
题目链接 题意就是取 {1, 2, 3, ..., N} 的一个 subset,使得这个 subset 内元素的和为一个给定的值 (太久没做题的)我一开始竟然(想都没想)(并且数据范围都没看)(十分愚蠢地)写了递归,显然爆时间 再后来写了一个丑陋的 dp,第 i 个元素取: dp[i-1][j-i]; 不取:dp[i-1][j]; 最后才意识到这是个01背包,求将原创 2017-02-25 17:14:05 · 291 阅读 · 0 评论 -
hdu1176 免费馅饼 两种动态规划 三段程序(分别为TLE,AC,AC)
题目链接 思路: 1) 做完了最长上升子序列(hdu5748)和一道类似的 hdu1087 之后,被推荐了这道题目,于是自然而然地就想到了一个状态转移方程。 从之前任意某一秒所在的位置到当前所在的位置,这之间的距离如果能在这段时间内到达的话,就纳入考虑范围。 sum[i] = max(sum[j]+1) ,j 复杂度是n^2 然后毫无悬念地TLE了 TLE代码原创 2016-09-30 18:49:48 · 397 阅读 · 0 评论 -
hdu1069 Monkey and Banana 一个简单的动态规划
题目链接 前一天睡前看了一道题,睡觉的时候想了想,一大早(误)起来写了一下交了然后就AC了。 嘿!太难得了!(…… 感觉是思路很简单的一个动态规划,然后也没有做任何优化,连双关键字排序也只是写的选择排序的......因为感觉数据量实在很小啊(其实是因为不熟悉怎么用sort...)。 首先读入的时候处理一下,把任意可能的砖块都存到数组里面,默认前两个为长宽,第三个为高。然后从大到小双原创 2016-10-03 10:09:39 · 400 阅读 · 0 评论 -
hdu1171 Big Event in HDU 动态规划
题目链接 题意: 输入一系列器械的价值及分别的个数,将它们尽可能地均分。 思路: 先计算出所有器械价值的总和,除以2得到一个max,那么少的那部分的价值肯定在0-max当中 开始动态规划。 价值为0是肯定可以做到的,标记为1(可取到)。 此后对每件器械,在前面的基础上可以取到的价值进行标记。 最后从max开始往下找,找到的第一个可以的就是少的那部分的价值。原创 2016-10-03 20:22:31 · 337 阅读 · 0 评论 -
hdu2570 迷瘴 动态规划
题目链接 题意: 有多瓶体积一样浓度不一样的药水,要使混合后浓度小于等于w,求可能的体积最大值。 思路: 显然又是一道动态规划。 想了好一会儿数组下标该取什么,如果浓度不是小数的话,取浓度做起来很方便,在0 那么把数组下标取作混合的瓶数怎么样? 这样想了然后就通了然后就写过了。 dp[瓶数] = 浓度和,(因为每一瓶的体积都相同,所以很显然的所有的浓度加起来除以瓶数原创 2016-10-03 22:00:17 · 432 阅读 · 0 评论 -
hdu2159 FATE 动态规划(多重背包
题目链接 关于以什么为横纵坐标的问题还是绕了好久。 一开始用的是 dp[经验][忍耐度] = 物品个数 ,转移方程是 dp[i][j] = min(dp[i-exp[kk]][j-lp[kk])+1; 可以从那些已经标记过的或者说从dp[0][0]转移过来。 交了以后WA了,为什么呢......原来经验值可以爆啊。 好吧那么就换。 改用 dp[物品个数][忍耐度] = 经验,转移原创 2016-10-09 21:30:56 · 383 阅读 · 0 评论 -
2017多校四 1012题 hdu 6078 Wavel Sequence dp好题
题目链接 题意: 给定两个数组 a 与 b,找到 a 中的一个子序列满足a1a2>a3a4>a5a6... 并且在 b 中也有一个子序列与 a 一一对应,即 f1,f2,...,fk(1≤fi≤n,fifi+1) and g1,g2,...,gk(1≤gi≤m,gigi+1), where afi=bgi 参考: http://blog.csdn.net/clx555原创 2017-08-06 22:25:54 · 341 阅读 · 0 评论