动态规划

动态规划解决01背包问题

一、问题描述:有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 二、总体思路:根据动态规划解题步骤(问题抽象化、建立模型、寻找约束条件、判断是否满足最优性原理、找大问题与小问题的递推关系式、填表、寻找解组成)找出01背包问题的最优解以及解组成,然后编写代码实现; 三、动态规划的原理及过程: eg:numb...

斐波那契数列(动态规划)

#include "stdafx.h" #include <iostream> using namespace std; #define MAXSIZE 100 int bofei_bottom(int n) { int f[MAXSIZE]; f[0] = 0; f[1] = 1; for (int i = 2; i <= n;...

Codevs_1040_[NOIP2001]_统计单词个数_(划分型动态规划)

描述 http://codevs.cn/problem/1040/ 与Codevs_1017_乘积最大很像,都是划分型dp. 给出一个字符串和几个单词,要求将字符串划分成k段,在每一段中求共有多少单词(两个单词不能共享第一个字母),将每一段中的单词个数相加,求最大值. 1040 统计单词个数 2001年NOIP全国联赛提高组 时间限制: 1 s...

括号匹配(二) -- 经典动态规划

这里的括号匹配 , 如果两个相同的话 就执行下面的 语句if(cmp(str[i],str[j])) dp[i][j] = min(dp[i][j],dp[i+1][j-1]); 每次确定 从 i 到 j 的需要填补的 括号的时候 就默认 这个 值是 1051 #include<stdio.h> 2...

动态规划——线性dp

我们在解决一些线性区间上的最优化问题的时候,往往也能够利用到动态规划的思想,这种问题可以叫做线性dp。在这篇文章中,我们将讨论有关线性dp的一些问题。 在有关线性dp问题中,有着几个比较经典而基础的模型,例如最长上升子序列(LIS)、最长公共子序列(LCS)、最大子序列和等,那么首先我们从这几个经典的问题出发开始对线性dp的探索。 首先我们来看最长上升子序...

石子合并(动态规划DP)

时限: 1000ms 内存限制:10000K 总时限:3000ms 描述: 在一个圆形操场的四周摆放着n堆石子(n<= 100),现要将石子有次序地合并成一堆。规定每次只能选取相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 编一程序,读入石子堆数n及每堆的石子数(<=20)。选择一种合并石子的方案,使得做n-1次合并,得分...

嵌套矩形(动态规划)

思路: 先把这些矩形统一 一下,让最长边向下,然后按大小放好。 这样,我们就可以来构建DAG图形, 令,被包含的矩形a与包含的矩形b看成a一一>b的路线,这样就形成了这样的图形: ,我们一定知道最小矩形一定是不能包含其他矩形的(因为没有矩形比最小矩形还小),同时,知道最大矩形一定不能被包含。(因为没有矩形比最大矩形大) 为什么,我们要考虑最大和最小矩...

Max Sum Plus Plus (动态规划) HDU1024

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1024 (http://www.fjutacm.com/Problem.jsp?pid=1375) 题意:长度为n的序列里,m段不相关区间的最大和 思路:我们先要确定一个东西,就是状态,这里我用dp[i][j]表示前j个数在取a[j]情况下分i段的最大和; 那么...

luoguP3830 [SHOI2012]随机树 期望概率 + 动态规划 + 结论

题意非常的复杂,考虑转化一下: 每次选择一个叶节点,删除本叶节点(深度为$dep$)的同时,加入两个深度为$dep + 1$的叶节点,重复$n$轮 首先考虑第$1$问,(你看我这种人相信数据绝对是最大的数据,直接$f[i][S]$表示$i$个叶子结点,深度之和为$j$的时候的概率,然后化前缀和化出来...) 对于一个深度为$x$的点,对它操作后,深度增...

数据结构 练习 19-活动选择问题的实现(动态规划 和 贪心)

问题叙述:如下图表示活动的开始和结束时间,s[i],开始时间;f[j]结束时间。现在要进行一些列如下活动,注意每个时间段只能进行一场活动,也就是活动不能同时进行,要求举行的活动次数最多。求调度方法。 老规矩,动态规划,要找出两个问题: 1,子问题的最优解; 2,子问题是什么。 abviously,本问题的最优解为:活动数的次数最多,子问题是:看递推公式...