
Dynamic Programming
文章平均质量分 72
sstrawberry
这个作者很懒,什么都没留下…
展开
-
poj 2479 Maximum sum && poj 2593 Max Sequence
题目链接:http://poj.org/problem?id=2479 题目大意:求一个数列中两个不重叠子序列的最大和。 题目分析:求最大子段和:dp[i] = max(dp[i-1] + num[i], num[i])。这道题只需要正序和反序各求一次最大子段和,然后枚举断开的点,把序列分成左右两边,在两边找出各自的最大子段和,两个值相加后的最大值就是答案。 代码参考: #include原创 2013-08-19 10:42:35 · 494 阅读 · 0 评论 -
hdu 1025 Constructing Roads In JGShining's Kingdom
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1025 题目大意:求最长上升子序列 题目分析:因为通常求LIS的算法复杂度为n^2,所以直接套用必定会TLE,所以这里必须要用二分形式的那种求法,举例说明其算法过程: 比如:5 9 4 1 3 7 6 7 将5直接放入容器:5 9大于容器中最大的数5,插入容器末尾:5原创 2015-02-18 01:57:44 · 468 阅读 · 0 评论 -
hdu 1011 Starship Troopers
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 题目大意:n个洞组成一棵树,你有m个士兵,你从1号洞开始攻打,每个洞有a个"bugs"和b的价值。每个士兵可以打20个"bugs",求可得到的最大价值。 题目分析:因为只有攻打了a房间才能继续攻打b房间,所以是树形关系,除此之外都与背包类似。 代码参考: #inclu原创 2015-02-17 19:35:18 · 645 阅读 · 0 评论 -
codeforce 479E - Riding in a Lift
题目链接:http://codeforces.com/problemset/problem/417/C 题目大意:所有参加者被分成n个小组,两支球队只能打一次。构造出每个队击败其他球队恰好k次的情况。 题目分析:原创 2014-11-05 15:00:05 · 593 阅读 · 0 评论 -
hdu 4336 Card Collector
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题目大意:每包中含有这些卡片的概率为p1,p2,……pN. 每包至多一张卡片,可能没有卡片。问需要买多少包才能集齐N张卡片,求次数的期望。 题目分析:使用状态压缩表示卡片的收集情况,bin[i]=j表示在i状态的情况下,集齐卡片需要买东西次数的期望。 由于每包中有三种情况: 1. 没原创 2014-03-17 09:22:05 · 782 阅读 · 0 评论 -
hdu 3555 Bomb
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 题目大意:1~n区间内不出现相邻的49的个数。 题目分析:数位DP。 代码参考: #include #include typedef long long LL; const int N = 20; LL dp[N][N]; int num[N]; //dp[i][0],表示存原创 2014-03-14 20:24:17 · 675 阅读 · 0 评论 -
hdu 2089 不要62
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题目大意:在区间内不能出现4,或者相邻的62的数字的个数。 题目分析:数位DP。 代码参考: #include #include const int N = 10; int dp[N][N], num[N]; //dp[i][0],表示不存在不吉利数字 //dp[i][1],原创 2014-03-14 16:19:28 · 686 阅读 · 0 评论 -
poj 1014 Dividing
题目链接:http://poj.org/problem?id=1014 题目大意:告诉价值为1、2、3、4、5、6的物品各有几件,判断两人能否平分。 题目分析:方法很多,比如二进制多重背包、抽屉原理、dfs(需要预处理)。注意剪枝和输出格式。 代码参考: #include #include const int maxn = 20000*6+9;//于石头总数最多为M=20000,故其价值总原创 2013-08-14 18:14:27 · 526 阅读 · 0 评论 -
poj 1050 To the Max
题目链接:http://poj.org/problem?id=1050 题目大意:在一个矩阵中找到一个子矩阵,使该子矩阵和最大。 题目分析:一维:求最大连续子序列,状态方程:sum[i] = max(sum[i-1] + num[i], 0)。 例如: num[]: -5, 7, -2, -6, 5, -1, 4 sum[]: 0, 7, 5, 0, 5, 4原创 2013-08-19 12:21:06 · 488 阅读 · 0 评论 -
zoj 3725 Painting Storages
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3725 题目大意:n个格子排成一条直线,可以选择涂成红色或蓝色,问最少 m 个连续为红色的方案数。 题目分析:dp[i]代表在1~dp[i-1]里出现了m个连续的R的方案数,从dp[i-1]推到dp[i]的时候有两种情况: ①本来就有m个连续的R,此时后面原创 2014-03-12 00:50:23 · 773 阅读 · 0 评论