ACM_动态规划(DP问题)
文章平均质量分 66
RaAlGhul
这个作者很懒,什么都没留下…
展开
-
BestCoder Round #78 (div.2)1002 CA Loves GCD
CA Loves GCDTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 617 Accepted Submission(s): 217Problem DescriptionCA is a fine原创 2016-04-03 14:12:58 · 544 阅读 · 0 评论 -
BestCoder Round #56 Clarke and problem
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5464题意:给我们n个数以及p,问我们从中间取出一些数使得和为p的倍数的方法数,我们可以采用DP来解决这个问题dp[i][j]表示取到第i个数和对p取模为j的方案数,状态转移方程为:dp[i][j] = dp[i-1][j] + dp[i-1][(j-(a[i]%p+p)%p)];小编解释一原创 2016-05-20 16:56:04 · 387 阅读 · 0 评论 -
HDOJ 5234 Happy birthday
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5234题意涉及到取与不取求最大值的问题,很容易想到的是运用背包去求解,不过这是在一个二维的格子中我们不能只是用一个简单的二维背包,而是运用一个三维的背包,又因为每次只能向下和向右走,所以我们的状态转移方程也就是向下和向右转移即可。#include #include #include #in原创 2016-06-25 12:56:02 · 481 阅读 · 0 评论 -
TOJ 3991 Eat or Study
题目链接:http://acm.tju.edu.cn/toj/showp3991.html题意:给我们每一天学习的值和吃的值,然后给我们必须要到的学习的值,然后问我们到必须要学习到的值的时候最大满足的吃的值。一开始一看,这个问题有点像是背包,但是又一个问题那就是我们背包问题的体积和价值是连在一起的,也就是说我们是放入一定体积下同时获得的价值,但现在我们是要么学习,要么吃,看起来就不能用到背原创 2016-07-11 11:38:24 · 442 阅读 · 0 评论 -
HDOJ 1290 献给杭电五十周年校庆的礼物
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1290一道简单的递推题,首先我们先讨论在一个平面内的情况,在一个平面内,在最优解的情况下(保证没有两条直线共线),每一次加一条直线,都会与过去的n-1条直线都有一个交点,很明显相邻的两个交点就会和其他的直线交点形成一个平面,所以f(n) = f(n-1) + n = 1+2+3……+n =原创 2016-07-25 11:21:12 · 556 阅读 · 0 评论 -
HDOJ 3182 Hamburger Magi
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3182题意:给我们一些汉堡的价值以及制作成本,再给出每一个汉堡做之前的前置条件,问我们在有一定钱的情况下能做出来的最大的价值是多少。如果去掉这个前置条件的话就是一道普普通通的背包题目,因为多了一个前置条件,所以我们必须讨论当前的每一种情况,也就是说,我们得用状压dp来完成,我们用2进制数来表示当原创 2016-07-04 10:20:36 · 547 阅读 · 0 评论 -
HDOJ 5691 Sitting in Line
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5691小编果然是个辣鸡,百度之星比赛过去好久了,现在在状态压缩的专题里看到这一题,才反应过来这道题是状态压缩=.=,现在看来,16的数据以及很明显的状态暗示,我居然都没有看出来……哎,果然还是太辣鸡了。本体不仅要枚举用了几个的状态,还要枚举当前状态最后一个是什么才行,因为我们是要算出相邻两项的乘原创 2016-07-04 10:31:21 · 534 阅读 · 0 评论 -
HDOJ 5418 Victor and World
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5418题意:给我们一些无向边,问我们经过所有的点再回到起点的最短的路径长度是多少。如果题目说每个城市只能走一次,那么问题就变成了求一条最短的哈密尔顿回路,而求解哈密尔顿回路是一个NP问题……抱着这个思路多看了一眼,题目并没有说明一个城市只能走一次,那么也就是说从一个城市到另一个城市的话我们就可以原创 2016-07-05 11:15:17 · 413 阅读 · 0 评论 -
团体程序设计天梯赛 决赛 L2 列车调度
题目链接:https://www.patest.cn/contests/gplt/L2-014题意:让我们求出这个序列最少的下降序列个数,而最少的下降序列个数就等于整个序列最长上升子序列的长度。#include #include #include #include using namespace std;const int maxn = 100000+5;int a[maxn]原创 2016-07-17 11:00:33 · 935 阅读 · 6 评论 -
排队问题
一道学校内部测试赛的题目,对于这题我们采用的方法是DP。dp[i][j][0~1]表示有i个男生j个女生时,最后一个人站的是男生(1)或女生(0)的方法数。在男生个数没有超过k1的时候:dp[i][j][0] = dp[i-1][j][0] + dp[i-1][j][1]。在女生个数没有超过k2的时候:dp[i][j][1] = dp[i][j-1][0] + dp[i][j-1][1原创 2016-07-08 11:20:18 · 654 阅读 · 0 评论 -
HDOJ 5763 (2016多校联合训练 Training Contest 4) Another Meaning
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5763题意:给我们一个母串a和模板串b,我们可以把母串里面包含的模板串换成另一个串,问我们最终可以得到多少种不同的串。这题我们用到的思路就是KMP+DP。首先,我们用KMP求解出所有的能够匹配模板串的位置,然后就可以开始DP求解了,状态转移方程为:1.如果当前位置没有匹配到模板串原创 2016-07-30 13:11:51 · 715 阅读 · 0 评论 -
Codeforces #363 Vacations
题目链接:http://codeforces.com/contest/699/problem/C比赛时小编一卡,才100的数据,果断暴力,没想到这么小的数据最后还是在终端被TLE叉掉了=.=。这题应该最正确的做法是用到DP,用dp[i][0~2]表示在第i天的时候分别做sports,contest,rest的状态。#include #include #include原创 2016-07-20 12:08:24 · 352 阅读 · 0 评论 -
HDOJ 5791 (2016多校联合训练 Training Contest 5) Two
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5791又是一道多校难得的水题,简单的DP,用到了一点容斥定理的思想。我们设dp[i][j]表示的是第一个串匹配到了第i位,第二个串匹配到了第j位时的公共序列个数,显然如果不匹配第一个串的第i位时,就等于dp[i-1][j],当不匹配第二个串的第j位时,就等于dp[i][j-1],显然这两原创 2016-08-05 18:25:59 · 513 阅读 · 0 评论 -
HDOJ 5794 (2016多校联合训练 Training Contest 6) A Simple Chess
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5794第六场多校唯一"做"出来的一题(小编觉得,像 A Boring Question(01)和 A Simple Nim(03)这种打个表莫名其妙就A的题没啥好讲的)。题意:给我们一个棋盘,棋盘上有r个障碍,我们能够从(1,1)出发,每一次能够向右下走日字,问我们走到终点的方案数。原创 2016-08-06 14:45:14 · 568 阅读 · 0 评论 -
HDOJ 5900 QSC and Master
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5900题意:给我们n个数对,我们能够通过去掉相邻且键值不互质的两个数对得到它们的价值,去掉一对之后有可能之前不相邻的就变成了相邻。这题我们采取的方法是对区间进行dp求解,用dp[L][R]来表示区间L~R之间的最大值,如果两个数不互质,且中间的额数都被取走了,那么这两个数就可以取原创 2016-09-18 19:05:59 · 500 阅读 · 0 评论 -
2017微软秋季校园招聘在线编程笔试 Composition
题目链接:http://hihocoder.com/contest/mstest2016oct/problem/2题意:给我们一些约束相邻的条件,让我们判断最少去掉多少个字符达到这个状态。解题思路,因为都是小写字母,我们完全可以根据每个字母的约束条件,找到条件下的最长子串,答案就是长度减去这个最长子串的长度。复杂度:26*n#include #include #incl原创 2016-10-10 23:03:41 · 2676 阅读 · 0 评论 -
HDOJ 5945 Fxx and game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5945题意:给我们k,t,我们每次能把一个数减去一个小于等于t的数,如果当前数是k的倍数,可以除以k,问我们将X变为1最少需要的操作数。首先,这题小编第一反应是贪心,当时贪心的想法就是能除尽量除,然后再减,交上去直接A了也没多想,结果比赛结束不到一分钟就被hack了。那么我们先来分析一下原创 2016-11-04 12:26:28 · 509 阅读 · 0 评论 -
"巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场 Combine String
题目链接:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1006&cid=714题意:给你两个字符串a和b,再给你一个字符串c,问你c可不可以分成两个a和b的子串。此题我们考虑c串的每一位,c的每一位前面的都可能是a的前i个数和b的前j个数组成,那么我们可以去枚举每一种组合情况。我们用dp[i][j]来表示在枚举到原创 2016-05-29 10:47:07 · 853 阅读 · 0 评论 -
BestCoder Round #57 Scaena Felix
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5479题意:给我们一个只含有(和)的序列,我们可以进行一个操作把括号反向,问我们最少进行几个操作使得序列里面没有()。一开始小编以为只要存在一个(,其右边有)就不是目标状态,后来发现目标状态值需要补存在相邻的()就行,所以也就是说,每一位只跟其相邻位有关系,那么我们就可以用赢二维DP来解决这个问原创 2016-05-19 10:51:41 · 364 阅读 · 0 评论 -
HDOJ 3336 Count the string
Count the stringTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7477 Accepted Submission(s): 3461Problem DescriptionIt is wel原创 2016-04-07 21:40:55 · 565 阅读 · 0 评论 -
BestCoder Round #75 King's Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5643这道题是一个类似于约瑟夫环的问题,但是跳动数每次都+1,小编先给出这道题的官方题解:King's Game约瑟夫问题的一个变种,然而题目全部是在唬人,就是一个简单的递推。虽然我知道有人会打表。。。我们看看裸的约瑟夫是怎么玩的:nn 个人,每隔 kk 个删除。原创 2016-04-14 22:23:43 · 304 阅读 · 0 评论 -
HDOJ 2041 超级楼梯
超级楼梯Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 43939 Accepted Submission(s): 22449Problem Description有一楼梯共M级,刚开始时你在第一级,若原创 2016-02-11 18:23:51 · 485 阅读 · 0 评论 -
HDOJ 2044 一只小蜜蜂...
一只小蜜蜂...Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 55721 Accepted Submission(s): 20174Problem Description有一只经过训练的蜜蜂只能爬向右原创 2016-02-11 20:10:10 · 482 阅读 · 0 评论 -
HDOJ 2045 不容易系列之(3)—— LELE的RPG难题
不容易系列之(3)—— LELE的RPG难题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41466 Accepted Submission(s): 16582Problem Description人原创 2016-02-11 20:44:05 · 525 阅读 · 0 评论 -
HDOJ 2046 骨牌铺方格
骨牌铺方格Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 40835 Accepted Submission(s): 19804Problem Description在2×n的一个长方形方格中,用一个1原创 2016-02-11 20:57:19 · 414 阅读 · 0 评论 -
百度之星2015资格赛 大搬家
大搬家 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem Description近期B厂组织了一次大搬家,所有人都要按照指示换到指定的座位上。指示的内容是坐在位置ii上的人要搬到位置jj上。现在B厂有NN个人,一对一到原创 2016-05-10 20:19:54 · 1000 阅读 · 0 评论 -
HDOJ 1494 跑跑卡丁车
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1494跑跑卡丁车,中文题,题意不再赘述。每次小编在写DP题解的时候都会加上一句,DP问题是个玄学,这道题也是一样,在输入方面每一个路段都有两个值,是不是和背包问题很像啊,每一个东西都有一个体积和价值,当然,这道题肯定不是简单的01背包那么简单,这题特殊的一些条件肯定在转移方程上会有所不同,我们要同时原创 2016-04-15 23:16:55 · 880 阅读 · 0 评论 -
HDOJ 1081 To The Max
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1081题意:输出最大和的子矩阵的和。拿到这题呢我第一反应是用统计的方法来做,也就是用二维的树状数组,因为题目的数据很小,才到100,要用二维树状数组遍历所有情况求最大值理论上来说是绝对可以的,小编我没试过。这道题这里小编讲解得方法是贪心+DP。在HDOJ上有这么一道题,因为做的时间有点久远了,小原创 2016-04-16 10:43:47 · 669 阅读 · 0 评论 -
ZOJ 3872 Beauty of Array
题目链接:http://icpc.moe/onlinejudge/showProblem.do?problemId=5520动态规划之所以被称作玄学,是因为往往有时候很难去想到两个看起来不相干的东西之间的关系。此题的题意是让我们求出所有连续子序列的所有不同元素的和。我们用一个pre数组记录当前元素上一次出现的位置,dp记录取到当前位置时的总和,则状态转移方程为: dp[i] = dp[原创 2016-05-03 09:37:50 · 161 阅读 · 0 评论 -
HDOJ 5410 CRB and His Birthday
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5410题意:有m的钱,和n个物品,每个物品买得到的价值是A[i]*x+B[i](x为购买的个数),问你用m块钱能得到的最大的价值一道很好的背包题,真心很好,小编刚刚拿着的时候一看就是背包问题,但是就是没有一下就想出来怎么背包。仔细想,这个题可以把我们的商品分成两部分,一部分相当于第一次购买某一件原创 2016-05-26 21:19:26 · 414 阅读 · 0 评论 -
HDOJ 1422 重温世界杯
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1422一道简单的动态规划,对于处理这种收尾相连的问题,我们往往是在n后面再加n个与原来相同的数进行处理,对于这个问题,取与不取完全取决于当前的生活费是否大于0,我们在输入的时候就可以直接记录生活费与花费的差,这样方便我们直接进行DP叠加。#include #include #include原创 2016-04-20 10:23:50 · 682 阅读 · 0 评论 -
HDOJ 1059 && POJ 1014 Dividing
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059题目链接:http://poj.org/problem?id=1014题意:给我们6种物品,其价值分别是1、2、3、4、5、6,给出我们这些物品每一种的数量,问我们可不可以将其分成价值一模一样的两堆。此题的做法就是运用典型的多重背包问题,最后只需要判断是否满足dp[sum/2] ==原创 2016-04-20 11:03:52 · 420 阅读 · 0 评论 -
华中农业大学第四届程序设计大赛网络同步赛 Arithmetic Sequence
题目链接:http://acm.hzau.edu.cn/problem.php?cid=1009&pid=9Problem J: Arithmetic SequenceTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 1823 Solved: 317[Submit][Status][Web Board]Descr原创 2016-05-16 12:40:27 · 977 阅读 · 0 评论 -
HDOJ 1171 Big Event in HDU
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1171此题让我们求出最好的分配方式使得两边的差最小。此题有两种做法,第一种是用母函数,第二种是用01背包。1.母函数:进行母函数的算法后,我们从中间开始找,第一个找到的不为0的便就是我们要找的。2.背包:背包的处理就只需要找到我们V/2的容积下最大获得的价值即可。#inclu原创 2016-04-22 10:39:21 · 520 阅读 · 0 评论 -
HDOJ 1248 寒冰王座
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1248拿到这题的时候小编完全没有想到这是一道背包题……我们把我们的钱作为容积,把产品的价格作为其花费和价值,找到在容积下的最大价值即可。#include #include #include #include using namespace std;int dp[10000+5],val原创 2016-04-22 10:44:35 · 437 阅读 · 0 评论 -
HDOJ 6082 度度熊与邪恶大魔王
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6082百度之星2017资格赛的第三题。自从从集训队退出之后,就再也没有做过题目了,当天晚上突然看到短信才想起还参加了这个比赛,当时正在看守望世界杯(堕落的暑假),有点心急,尤其是当时点开第一题看了一下,满脑子都是这TMD能做,未免有点心烦,心想反正做一题就可以了,于是马上打开了过原创 2017-08-08 02:11:37 · 649 阅读 · 1 评论