![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
Re_cover
这个作者很懒,什么都没留下…
展开
-
Wiki OI 1163 访问艺术馆
题目链接:http://wikioi.com/problem/1163/算法与思路:树形dp,dfs;将博物馆的结构抽象成一棵二叉树,每条边都有对应的权值(走过这条边花费的时间),只在叶子节点有藏画,要求你在有限的时间内偷到尽可能多的藏画。点的信息按照深度优先顺序给出(前序遍历),建立一颗二叉树;然后从根节点开始深搜,每走过一条走廊到达下一个点,剩余的时间remain要减去原创 2013-07-20 08:55:50 · 1488 阅读 · 0 评论 -
Wiki OI 1014 装箱问题
题目链接:http://wikioi.com/problem/1014/算法与思路:01背包转移方程为dp[i][j]=max{dp[i-1][j],dp[i-1][j-cost[i]]+w[i]}表示考虑第i件物品,容量为j时,有两种策略,第一种是不选该物品,第二种为选择该物品,在这两种策略中选择一个最优策略#include#includeint v, n;int dp[2原创 2013-05-26 22:31:17 · 1799 阅读 · 0 评论 -
Wiki OI 1220 数字三角形
题目链接:http://wikioi.com/problem/1220/算法与思路:棋盘型动态规划状态转移方程DP[i][j]= {DP[i][j] + max(DP[i + 1][j] , DP[i+1][j+1])}, 程序从最底层开始向上dp,最后输出DP[1][1]即可。#include int dp[101][101];int Max(int x, int y){原创 2013-05-16 21:43:34 · 1143 阅读 · 0 评论 -
Wiki OI 1048 石子归并
题目链接:http://wikioi.com/problem/1048/算法与思路:尽管是比较简单的dp,推出动态转移方程还得卡实现,毕竟是菜鸟啊。dp[i][j] = min(dp[i][k] + dp[k + 1][j] + s[j] - s[i - 1]) k属于[i, j];dp的过程中边界很重要,在输入阶段维护一个sum[i]数组表示前i项的石子原创 2013-05-16 18:49:57 · 1834 阅读 · 0 评论 -
Wiki OI 1044 拦截导弹
题目链接:http://wikioi.com/problem/1044/算法与思路:依次遍历整个序列,每一次求出从第一个数到当前这个数的最长上升子序列,直至遍历到最后一个数字为止,然后再取dp数组里最大的那个即为整个序列的最长上升子序列。我们用dp[i]来存放序列1-i的最长上升子序列的长度,那么dp[i]=max(dp[j])+1,(j∈[1, i-1]); 显然dp[1]=原创 2013-05-14 19:58:58 · 2830 阅读 · 2 评论 -
Wiki OI 1039 数的划分
题目链接:http://wikioi.com/problem/1039/算法与思路:划分型dp,递推;将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5; 1,5,1; 5,1,1;因此将n划分份的一种方法唯一的表示为n1+n2+……nk,其中n1这样可以形象地把n的k份划分看作是把n块积木堆成原创 2013-07-19 17:18:06 · 1569 阅读 · 0 评论