Algorithm_动规
文章平均质量分 77
niuox
这个作者很懒,什么都没留下…
展开
-
动态规划解最长公共子序列问题
以前介绍过使用LIS来求LCS,现在我们用DP来求以下转自:http://blog.csdn.net/yysdsyl/article/details/4226630动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。为了节约重复求转载 2012-12-27 23:07:51 · 542 阅读 · 0 评论 -
NK1137 石子合并问题
题目链接:http://acm.nankai.edu.cn/p1137.html题意:石子合并问题。DP问题。我们先来考虑一条直线的问题,最小花费和最大花费方法是一样的,我们只考虑一种:我们先考虑一个子问题,要把从i 到j 的石子合并成一堆,肯定要先把它们合并成两堆;由于只允许相邻两堆合并,必然是i 到j 之间被分成了两段,设这个中间点是k,则这个方案可以表示为先把i 到k 合并,再把k原创 2013-04-12 09:04:45 · 741 阅读 · 0 评论 -
Hoj 1402 整数划分问题
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1402本题是整数划分问题各种变种的集合。各种变种都可以用DP解决。第一种:将n划分成若干正整数之和的划分数。令dp[i; j] 的含义变为把i 分成最大数不超过j 的几份的方法数,这样方程是dp[i,j] = dp[i,j - 1] + dp[i - j, j].第三种: 将原创 2013-04-13 18:50:51 · 1107 阅读 · 0 评论 -
Hoj 2500 Party at Hali-Bula
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2500树形DP典型题。求最大独立集。本题难在唯一性的判断上。没接触树形DP以前,我以为本题的最大独立集的值应该是(1 + 3 + 5 + 7 + ...)层的和 与 (2 + 4 + 6 + 8 + 10 + ...)层的和的最大值。其实不对。因为如果父节点是不选择的,而子节点既可以不选原创 2013-04-22 16:15:15 · 779 阅读 · 0 评论 -
Hoj 2665 Factory of XiaoE
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2665本题是经典的旅行商(TSP)问题.可以用状态压缩DP来做,dp[i][j]的定义:状态为i时,以某号城市为起点,且我站在第j个地点对应的最短路径。#include #include #include #include using namespace std;#define原创 2013-04-26 22:51:00 · 791 阅读 · 0 评论 -
Hdu 4055 Number String
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4055和前一题类似。DP方程为:dp[i][j] 表示长度为i以j结尾的合法的排列个数(由1...i组成的排列)。还要清楚一个结论:给定一个长度为i-1的字符串,由{1,2,...,i}组成的合法排列数和由{1,2,...,j-1,j+1,...,i+1}组成的合法排列数原创 2013-04-29 17:19:01 · 694 阅读 · 0 评论 -
Uva 6177 The King's Ups and Downs
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4188题意是求1-n 的全排列中有多少呈现高低高低高低或者地高低高形式排列的个数。这种排列叫做:alternating permutations 或者 Extremal Pe原创 2013-04-29 14:55:28 · 2097 阅读 · 0 评论 -
Hoj 1227 Common Subsequence
题目:http://acm.hit.edu.cn/hoj/problem/view?id=1227求LCS问题曾经写过装换为LIS版本的,使用二分法的:http://blog.csdn.net/niuox/article/details/7710924这次写本应先写的DP解法,这个比较简单也比较经典:DP方程:1.当a[i] = b[j],c[i][j] = c[i-1][j-1原创 2013-01-28 23:53:20 · 540 阅读 · 0 评论 -
Hoj 1288 Bridging Signals
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1288标记一下LIS的DP解法:其中len[i]代表以array[i]结尾的单调递增字串的最大值。(标记一下,有些不对,以后再改)#include #include #include #include #include #include using namespace std;原创 2013-01-29 20:03:21 · 744 阅读 · 0 评论 -
背包问题经典模型
一、.0/1背包问题:问题描述:有N件物品和一个容量为V的背包。第i件物品的重量是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。状态方程:用f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}。原创 2013-01-30 17:47:32 · 5213 阅读 · 0 评论 -
Hoj 3040 Team Mate
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=3040题意:给定一串长度为n的数,求任意几个数的组合和能否是n的倍数。只要求输出其中一种情况即可。这题正解应该是用抽屉原理:依次求出前缀和s[i],那么前缀和相等的s[i]和s[j]之间的数的和就是n的倍数。即(i,j]#include #include #include #inclu原创 2013-08-12 10:55:17 · 900 阅读 · 0 评论 -
数位DP问题整理(一)
第一题:Amount of degrees (ural 1057)题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1057题意:[x,y]范围内的数,可以拆分成k个b进制的不同幂的和 的数字有多少。我们可以将x转换成二进制来讨论。那么问题就变成了求[0,x]范围内,二进制表示中含有k个1的数字有多少个。求[x,y]区间相减。我们可原创 2013-08-13 23:11:11 · 20732 阅读 · 1 评论 -
Hoj 3134 Xiaodai’s Budget Program
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=3134根据依赖关系可以建立很多颗树,组成一个森林。然后我们增加一个虚拟节点0,使0作为这些子树根节点的父亲。那么这些森林就组成了一颗以0为根的树。接下来我们要在树上建立背包方程:dp[s][i]代表以s为子树的情况花费了i元钱取得的最大重要度。dp[s][i] = max(dp[s]原创 2013-08-27 11:04:38 · 2468 阅读 · 0 评论 -
Hoj 1760 The jackpot
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1760题意:最大字串和。最大字串和有o(n^2)的求法,维护一个前缀和即可,也有o(nlgn)的求法,使用和归并排序相类似的手段。其中,最常用的O(n)求法是用Dp。所以dp[i] 表示以A[i] 结尾的最大子段和,假如以A[i - 1] 结尾的子串和最大也是负数,显然没有必要取,故dp原创 2013-04-11 16:18:47 · 757 阅读 · 0 评论 -
Hdu 4517 小小明系列故事——游戏的烦恼
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4517第一种解法:遍历求解。num[i][j]代表i行j列之前一共有多少个'×'。然后再面积夹击求解x*y、y*x是否满足,x==y只需要判断一次。这种方法提交用C++,不要用G++,否则会超时。#include #include #include #include #inc原创 2013-03-28 14:33:38 · 976 阅读 · 0 评论 -
在DP中使用"滚动数组"
转自:http://www.java3z.com/cwbwebhome/article/article19/res071.html?id=3963举个简单的例子:int d[]=new int[100];d[0]=1;d[1]=1;for(int i=2;i d[i]=d[i-1]+d[i-2];System.out.printf("%d",d[99]);转载 2012-12-27 23:12:09 · 1410 阅读 · 0 评论 -
Poj 1159 Palindrome
题目连接:http://poj.org/problem?id=1159注意:由于c[5000][5000]会爆栈,所以我们要采用滚动数组:使用c[2][5000]来求解:#include #include #include #define M 5010using namespace std;void reserve(char *a,char *b){原创 2012-12-27 23:10:38 · 542 阅读 · 0 评论 -
Hoj 1316 Human Gene Functions
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1316注意此DP方程:设两基因串为an,bma[i],b[j]分别表示a串的第i个核苷b串的第j个核苷ax,by为an,bm的子串;c[x][y]表示子串ax,by间最大相似程度值则c[n][m]表示串an,bm间最大相似程度值value(x,y)表示核苷x核苷y的相似程原创 2013-01-29 15:47:30 · 427 阅读 · 0 评论 -
Hoj 1488 The Brick Stops Here
本题是三维的01背包。题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1388若用dp[i][j][k]表示前i种砖中用了j种砖总含铜量为k的最少费用,那么dp[i][j][k]=min{dp[i-1][j-1][[k-copper[i]]+price[i] , dp[i-1][j][k]};for(i=0;i<=20;i++)原创 2013-01-31 23:48:51 · 746 阅读 · 0 评论 -
Hoj 2196 Job Scheduling by Open Bidding
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2196典型0/1背包问题:参考模型:http://blog.csdn.net/niuox/article/details/8556054注意输出格式:#include #include #include #include #include #include using nam原创 2013-01-31 10:14:18 · 998 阅读 · 0 评论 -
Hoj 3140\ Vijos 1775 乌龟棋
题目连接:http://acm.hit.edu.cn/hoj/problem/view?id=3140https://vijos.org/p/1775描述小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。乌龟棋中M张原创 2013-03-05 21:20:04 · 920 阅读 · 0 评论 -
Hdu 4540 威威猫系列故事——打地鼠
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4540简单的动归题。#include #include #include #include #include #include #include using namespace std;int map[25][25];int dp[25][25];int main(){原创 2013-04-02 23:08:53 · 849 阅读 · 0 评论 -
Hoj 3136 To help the beauty
本题练习快速排序和动态规划。题目连接:http://acm.hit.edu.cn/hoj/problem/view?id=3136#include #include #include #include using namespace std;#define Maxn 5002int be[Maxn];//开始时刻int en[Maxn];//结束时刻int原创 2013-01-05 15:32:51 · 727 阅读 · 0 评论 -
hdu 4502 吉哥系列故事——临时工计划
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4502腾讯第二届马拉松3月20日第0场第三题。DP题。和HIT秋季校赛的一道题目:http://blog.csdn.net/niuox/article/details/8469017 基本类似。只要把超过end超过m的先删除掉即可。其中best[i]表示选择第i分工作获得的最大收益,即第i份原创 2013-03-22 15:00:20 · 863 阅读 · 3 评论 -
HDU 4504 威威猫系列故事——篮球梦
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4504腾讯第二届马拉松3月20日第0场第5题。DP。dp[i][j]代表i次进攻得到j分的种类数另外本题用%I64提交能A,用%lld提交就不能A。。这。。。#include #include #include #include #include #include #incl原创 2013-03-23 10:15:17 · 890 阅读 · 1 评论 -
Hoj 1058 Number Triangles
本题可以用搜索做,但是会很耗时。题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1058用DP,方程式:f[i][j] = max(f[i-1][j],f[i-1][j-1]) + map[i][j];(将三角形逆时针旋30度后)经典的方格取数问题。#include #include #include #include #i原创 2013-01-28 19:26:03 · 833 阅读 · 0 评论 -
Hdu 4526 威威猫系列故事——拼车记
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4526DP题。dp[i][j]表示前i辆车送走j个人的最小花费。状态转移方程是: dp[i][j] = min(dp[i][j],dp[i-1][j-p] + p*t[i] + d),其中0细节部分和边界条件看代码。#include #include #include #inc原创 2013-03-27 16:04:03 · 1270 阅读 · 0 评论 -
Hdu 4501 小明系列故事——买年货
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4501DP题。dp[n][v1][v2][k]代表前n件商品,最多花了v1人民币,最多使用了v2的积分,最多使用了k次的免费券所获得的最大价值。状态方程见代码:#include #include #include #include #include #include原创 2013-03-27 19:05:23 · 955 阅读 · 0 评论 -
概率DP问题整理(一)
第一题:Hdu 3853 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3853简单概率DP题。注意思维逆过来考虑。#include #include #include #include #include #include #include #include using namespace std;#define Ma原创 2013-08-15 16:21:55 · 2490 阅读 · 0 评论