解法 首先是输入的问题,输入的时候还要注意每一层都有多少个 然后是怎么求解,一般求解首先要考虑顺序,是正序还是倒序 如果这个题是正序的话那么最终还需要将最后一行进行一次找max的运算 如果是倒序的话那么最终归于同一个起点,直接进行输出即可 转移方程 转移方程考虑把问题分散化,分散成小的问题,其中这个题的问题就是如果要找最大的,那么每一个数的下面两个相邻的数应该取最大的 所以就是dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+num[i][j] 如果要进行正推,那么应该…
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目,你能AC吗? Input 输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内.   Output 对于每个测试实例,输出可能得到的最大…
解法 排序+01背包 这里的排序规则用q-p升序排列这里是一个感觉是一个贪心的策略,为什么这样做目前也无法有效的证明或者说出来 然后就是01背包加了一个体积必须大于什么值可以装那么加一个max(p,q)的条件即可 代码 #include <bits/stdc++.h> using namespace std; struct node { int p,q,w; }num[1000]; bool cmp(node a,node b) { return a.q-a.p<b.q-b.p; } i…
解法 01背包变式,首先贪心的想一下如果要保证余额最小那么就需要用相减后最小的钱减去之前最大的价格,且得保证这个钱在5元以上 对于寻找如何减最多能包含在5元以上,这里用01背包 我们把价钱看做体积装进一个余额-5的01背包内,为什么是余额-5? 因为我们要保证总的价格在5元以上,还得保证不装最后一个,因为要减去最后一个 最后我们用原来的余额-装的最多的物品的价格-最大的物品的价格就是答案 注意还要特判本来m就小于5的情况 代码 #include <bits/stdc++.h> using na…
解法 一定要注意斐波那契数列的原始意义,斐波那契数列也叫作兔子数列是兔子繁衍的一种表示方法.同样适用于别的情况的动物繁衍问题 原始的是3个月一胎现在四个月那么方程就是 f(n)=n n<=4 f(n)=f(n-1)+f(n-3) n>4 代码 #include <bits/stdc++.h> using namespace std; int dp[1000][1000],num[1000][1000]; long long ans[100]; int main() { ios::s…
伪代码 用二维数组记录,如果出现可以转移的dp那么记录bk[当前体积][装的物品]=1 输出的时候倒推,如果存在连通的边那么输出并且总共的体积减去输出的体积 代码(uva-624,目前wa不明所以,网上的答案也是那么输出的,或许要输出最多的物品?目前也不会这种玩法) #include <bits/stdc++.h> using namespace std; int v[1000],dp[1000000],bk[1000][1000]; int main() { ios::sync_with_s…
                                                                                                        The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36138   Accepted: 21615 Description 73 88 1 02 7 4 44 5 2 6 5 (Figure 1)…
http://acm.hdu.edu.cn/showproblem.php?pid=2084 题意: 7 3  8 8 1   0 2      7 4   4 4 5 2    6     5 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大. 路径上的每一步都只能往左下或右下走.只需要求出这个最大和即可,不必给出具体路径.   解法1:dfs搜索每一条路径,可以发现很多点会重复搜索.时间复杂度为:O(2的n次方) //#include <bits/stdc++.…
所谓递推,是指从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果.其中初始条件或是问题本身已经给定,或是通过对问题的分析与化简后确定.关于递推的知识可以参阅本博客中随笔“递推(一):递推法的基本思想”. HDU 2044~2050这7道题是针对初学者进行递推学习的专项练习,下面给出它们的AC程序供参考. HDU 2044:一只小蜜蜂 不妨将图示的蜂箱结构看成从1--—2——-3——…的一个“W”型楼梯.蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.可以等效地看成蜜蜂每次上楼…
题目链接: acm.hdu.edu.cn/showproblem.php?pid=4747 Mex Time Limit: 15000/5000 MS (Java/Others)Memory Limit: 65535/65535 K (Java/Others) 问题描述 Mex is a function on a set of integers, which is universally used for impartial game theorem. For a non-negative i…