随笔分类 -  ACM_DP

摘要:题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1233 题目就不说明了。 背包的二进制优化,比如10可以表示为1 2 4 3,而这些数能表示1 ~ 10的任意的数。然后类似01背包就好了。 阅读全文
posted @ 2016-10-15 18:49 Recoder 阅读(522) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1125 题意: 给你n个数,q次询问,每次询问问你取其中m个数是d的整数倍的方案数。 题意: dp[i][j][k] 表示前i个数, %d=j, 取了k个的方案数。 Accepte 阅读全文
posted @ 2016-10-15 17:01 Recoder 阅读(329) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://lightoj.com/volume_showproblem.php?problem=1044 dp[i][j]表示i到j直接的最小回文区间个数,直接看代码 阅读全文
posted @ 2016-10-14 11:44 Recoder 阅读(257) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://poj.org/problem?id=3249 题意: 给你一个DAG图,问你入度为0的点到出度为0的点的最长路是多少 思路: 记忆化搜索,注意v[i]可以是负的,所以初始值要-inf。 阅读全文
posted @ 2016-10-11 17:03 Recoder 阅读(256) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1085 题意: 问你有多少个上升子序列。 思路: dp[i]表示以第i个数结尾的上升序列数量。 阅读全文
posted @ 2016-10-09 17:18 Recoder 阅读(251) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1013 题意: 给你两个字符串,让你构造出一个长度最小的字符串,且它的子序列包含这两个字符串。问它的长度,和多少种情况。 思路: 长度的话就是lena + lenb - LCS,这 阅读全文
posted @ 2016-10-09 16:50 Recoder 阅读(297) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题意: 给你度为1 ~ n - 1节点的权值,让你构造一棵树,使其权值和最大。 思路: 一棵树上每个节点的度至少为1,且度的和为2*n - 2。那么我们先给这些节点的度都-1,剩下的节点度为n - 阅读全文
posted @ 2016-10-07 19:48 Recoder 阅读(176) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/479/problem/E 题意: 给定一个启示的楼层a,有一个不能去的楼层b,对于你可以去的下一个楼层必须满足你当前楼层x与下一个要去的楼层y的距离小于x到b的距离。求出走k趟的方案数。 题解: dp[i][j] 表示第i趟 在 阅读全文
posted @ 2016-10-05 21:45 Recoder 阅读(486) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://poj.org/problem?id=3254 给你n*m的菜地,其中1是可以种菜的,而菜与菜之间不能相邻。问有多少种情况。 状压dp入门题,将可以种菜的状态用一个数的二进制表示。第i行的状态只与上一行有关。 此blog讲的很清楚:传送门 阅读全文
posted @ 2016-09-29 20:45 Recoder 阅读(115) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/583/problem/D 给你t个长度为n的数组。问你最长不下降子序列的长度。 一开始用第一个n数组的lis和最后一个n数组的lis和中间最多相同的数字出现的个数相加。这是错的,比如5 6 3 4 1 2 可以发现数组的长度很小 阅读全文
posted @ 2016-09-28 16:16 Recoder 阅读(448) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/467/problem/C 求k个不重叠长m的连续子序列的最大和。 dp[i][j]表示第i个数的位置个序列的最大和。 前缀和一下就好了。空间可以优化,滚动数组就好了。 阅读全文
posted @ 2016-09-27 13:23 Recoder 阅读(167) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/problemset/problem/687/C 题目大概说给n个各有价值的硬币,要从它们中选出若干个组合成面值k,而要求的是各个方案里这些选出的硬币能组合出来的面值有哪些。 dp[i][j][k]表示到第i个硬币,组成面值为j,包含面值为k的方 阅读全文
posted @ 2016-09-26 21:32 Recoder 阅读(264) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1201 题意不多说了。 dp[i][j]表示i这个数划分成j个数的情况数。 dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] 前 阅读全文
posted @ 2016-09-25 22:08 Recoder 阅读(945) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/118/problem/D 有n个步兵和m个骑兵要排成一排,其中连续的步兵不能超过k1个,连续的骑兵不能超过k2个。 dp[i][j][x][y]表示表示用i个步兵和j个骑兵,末尾有连续的x个步兵,或者有连续的y个骑兵。 所以x 阅读全文
posted @ 2016-09-25 21:20 Recoder 阅读(236) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.uestc.edu.cn/#/problem/show/1218 给出n根木棒的长度和价值,最多可以装在一个长 l 的容器中,相邻木棒之间不允许重叠,且两边上的木棒,可以伸一半的长度在容器外,求最大价值量 01背包是取和不取。那这里我们可以把容器长度 l x 2,筷子 阅读全文
posted @ 2016-09-23 21:30 Recoder 阅读(215) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.uestc.edu.cn/#/problem/show/1217 给你一个长为n的数组,问你有多少个长度严格为m的上升子序列。 dp[i][j]表示以a[i]结尾长为j的上升子序列个数。常规是三个for。 这里用树状数组优化一下,类似前缀和的处理,两个for就好了。 阅读全文
posted @ 2016-09-23 18:47 Recoder 阅读(228) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/712/problem/D A初始有一个分数a,B初始有一个分数b,有t轮比赛,每次比赛都可以取[-k, k]之间的数,问你最后A比B大的情况有多少种。 dpA[i][j]表示第i轮获得j分的情况数。因为第i轮只和第i-1轮有关, 阅读全文
posted @ 2016-09-22 20:19 Recoder 阅读(573) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1712 有n门课,和m天时间。每门课上不同的天数有不同的价值,但是上过这门课后不能再上了,求m天里的最大价值。 分组背包模版题。 阅读全文
posted @ 2016-09-21 16:04 Recoder 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/682/problem/D 给你两个字符串,求两个字符串中顺序k个的相同子串 长度之和。(注意是子串) dp[i][j][k][0] 表示a[i] == a[j]时,a字符串前i个和b字符串前j个,顺序k个相同的子串 长度之和 d 阅读全文
posted @ 2016-09-20 14:26 Recoder 阅读(173) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5489 给你n个数,要删去其中连续的L个,问你删去之后的LIS最大是多少? 我们先预处理出以i下标为开头的LIS,存到数组中。 然后可以枚举长为L的区间,每次移动,左边增加一个,右边删除一个。 最长上升子 阅读全文
posted @ 2016-09-16 20:50 Recoder 阅读(181) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示