DP练习(初级):ZigZag】的更多相关文章

当初学者最开始学习 dp 的时候往往接触的是一大堆的 背包 dp 问题, 那么我们在这里就不妨讨论一下常见的几种背包的 dp 问题: 初级的时候背包 dp 就完全相当于BFS DFS 进行搜索之后的记忆化查找. 背包问题 一 .   0 ~ 1 背包问题 实现一. return max ( rec ( i + 1, j ) , rec ( i + 1, j - cost[ i ]) + value[ i ]); //对第 i  件物品的选或者不选 记忆化.      这个是由于实现一产生的dp数…
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=1259&rd=4493 类似于求最长子串的方法.dp[0][i]表示以 元素sequence[i] 结尾的且它比子串中前一个数小的 最大子串,dp[1][i] 表示以 元素sequence[i] 结尾的且它比子串中前一个数大的 最大子串. 代码如下: #include <algorithm> #include <iostream> #inc…
题目链接:https://community.topcoder.com/stat?c=problem_statement&pm=1259&rd=4493 题意:给一串数字,求出最长的波动序列.波动的定义是一个数相邻的两个数同时比他大或者同时比他小,形象的看成一个波动的三角函数吧. 定义dp(i)为到第i个数字时的最长波动序列长度,我们发现仅有一维的数组是存不下状态的,还应该再维护一个量,那就是第i个数字的时候他是波峰还是波谷.于是dp数组扩展成了dp(i,k),k可以取0或1分别表示是波峰…
#include #include #include using namespace std; int visited[5][20][9009];// 访问情况 int dp[5][20][9009]; // M N num num即M-1位的数字 int num_2[7]= {2,3,5,7,11,13,17}; int num_3[9]= {2,3,5,7,11,13,17,19,23}; int num_4[11]= {2,3,5,7,11,13,17,19,23,29,31}; //存储…
Problem Statement      A sequence of numbers is called a zig-zag sequence if the differences between successive numbers strictly alternate between positive and negative. The first difference (if one exists) may be either positive or negative. A seque…
原题地址:https://vjudge.net/problem/ZOJ-3329 题目大意: 有三个骰子,分别有k1,k2,k3个面,初始分数是0.第i骰子上的分数从1道ki.当掷三个骰子的点数分别为a,b,c的时候,分数清零,否则分数加上三个骰子的点数和,当分数>n的时候结束.求需要掷骰子的次数的期望. (0<=n<= 500,1<K1,K2,K3<=6,1<=a<=K1,1<=b<=K2,1<=c<=K3) 思路: 如果设当前分数为 i…
本文主要内容为基础DP,内容来源为<算法导论>,总结不易,转载请注明出处. 后续会更新出kuanbin关于基础DP的题目...... 动态规划: 动态规划用于子问题重叠的情况,即不同的子问题具有相同的公共子子问题,在这种情况下分治算法会做许多不必要的工作,它会反复求解那些子子问题使得程序边的缓慢.而动态规划则对每个问题 只求解一次,将其解保存在一个表格中,从而避免一些不必要的重复计算. 动态规划常用来求解最优化问题,这类问题可以有很多解,每个解都有一个值,我们希望寻找具有最优值的解,我们称这样…
01背包和数塔都是寒假看的,数塔还算明白,但01背包虽然会做其实也是背下来的,一直不是很清楚它的可行性,昨天老师讲了以后恍然大悟,和数塔类似生成了一颗二叉树: 利用数组/dfs  自下而上/自上而下 递推/搜索 直至推到最顶点答案出现: 图解: 图没工夫做了,手残= =.: 意思就是每件物品根据取或不取两种状态生成了这颗解答树,不难发现和数塔类似了吧,用一个一维数组保存每次决策后的结果即可: 其实本来和数塔一样是用二维数组表示的,但显然只用一维就可还大大节省了空间: 这就是一件物品一件物品决策的…
http://www.hawstein.com/posts/dp-novice-to-advanced.html https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/ 感谢作者! 状态和状态转移方程 Longest Increasing Subsequence 初级 上面讨论了一个非常简单的例子.现在让我们来看看对于更复…
网址转载链接:  http://bbs.chinaunix.net/thread-4094539-1-1.html 动态规划:从新手到专家 Hawstein翻译 前言 我们遇到的问题中,有很大一部分可以用动态规划(简称DP)来解. 解决这类问题可以很大地提升你的能力与技巧,我会试着帮助你理解如何使用DP来解题. 这篇文章是基于实例展开来讲的,因为干巴巴的理论实在不好理解. 注意:如果你对于其中某一节已经了解并且不想阅读它,没关系,直接跳过它即可. 简介(入门) 什么是动态规划,我们要如何描述它?…