dp
LLL_yx
这个作者很懒,什么都没留下…
展开
-
CF1168C And Reachability(位运算+dp)
题目链接:http://codeforces.com/problemset/problem/1168/C题意:https://www.luogu.com.cn/problem/CF1168C思路:最后一定时要跳到y,所以如果能达到那么x-y之间必然至少有一个k,使得[k]中的某一位是1且a[y]中的某一位是1.所以设dp[i][j]为排在i号元素的右边下标最小数的下标(这个数的第j位为...原创 2020-03-15 21:07:34 · 308 阅读 · 0 评论 -
HDU - 3586 Information Disturbing(树形dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3586题目意思:给根节点为1的一棵树,删除一些边使叶子节点都不能到达根节点,并且边权和不能大于m,使删除边的最大值最小,求最小值。思路:这个题如果想到二分答案就递推很简单了,二分出答案然后dp去验证。dp[x]表示将x与它管辖的叶子节点失去联系所需要的总代价。dp(x)+=min(dp(...原创 2018-07-25 10:49:58 · 388 阅读 · 0 评论 -
数位dp学习整合
基础篇数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp咯。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位……数的每一位就是数位啦!之所以要引入数位的概念完全就是为了dp。数位dp的实质就是换一...转载 2018-07-28 16:40:56 · 254 阅读 · 0 评论 -
HDU - 4405 Aeroplane chess(概率dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4405、题目意思:数轴上有N+1个点(编号0~N),一个人玩游戏,从0出发,当到达N或大于N的点则游戏结束。每次行动掷骰子一次,骰子编号1-6,掷到多少就向前走几步,这个数轴上还有些特殊点,这些点类似飞行棋中的飞行点,只要到达这些点就可以直接飞到给定点。求总共投掷骰子次数的期望。思路:dp从后往...原创 2018-07-28 22:51:44 · 176 阅读 · 0 评论 -
HDU - 2089 不要62(数位dp,通过这个最基础的题来随便谈谈数位dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089题目意思:给定区间没有62和4的数有多少个思路:数位dp包括数位和dp。数位就是通过把数分解成一位一位的数来分析。那么数位dp的dp用来记忆什么东西呢?在一个区间中(比如【1,100000】),找没有62和4的数,一个一个检算很显然会有很多重复的部分(比如【101,110】和【...原创 2018-07-27 18:47:01 · 309 阅读 · 0 评论 -
HDU - 4389 X mod f(x)(数位dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4389题目意思:区间内找能整除它各位数字之和的数字的个数。思路:模数的范围就是0-81,直接枚举每个模数然后用dp存起来。代码:#include <bits/stdc++.h>#define INF 0x3f3f3f3f#define eps 1e-8#define ...原创 2018-07-28 10:36:19 · 310 阅读 · 0 评论 -
HDU - 3709 Balanced Number(数位dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709题目意思:给T组数据,每组数据给出一个x和y,求出[x,y]当中满足以其中一位为平衡点,满足在平衡点的左右两边的力矩大小一致。思路:因为每个数只可能有一个平衡点,且最大位数为18位,所以枚举每个位置为平衡点,dp记录一下就行了,注意当为0的情况,平衡点就有pos个,所以要减去(pos-1)...原创 2018-07-28 13:34:51 · 135 阅读 · 0 评论 -
POJ - 3254 Corn Fields(状压dp)
题目链接:http://poj.org/problem?id=3254题意:农夫有一块地,被划分为m行n列大小相等的格子,其中一些格子是可以放牧的(用1标记),农夫可以在这些格子里放牛,其他格子则不能放牛(用0标记),并且要求不可以使相邻格子都有牛。现在输入数据给出这块地的大小及可否放牧的情况,求该农夫有多少种放牧方案可以选择思路:用二进制压缩记录每一行的状态,在通过上一行与这一行的可行状...原创 2018-08-07 11:36:43 · 181 阅读 · 0 评论 -
CodeForces - 429B Working out(递推dp)
题目链接:http://codeforces.com/contest/429/problem/B题意:给n*m的矩阵,每个格子有个数,A从(1,1)出发只能向下或右走,终点为(n,m),B从(n,1)出发只能向上或右走,终点为(1,m)。两个人的速度不一样,走到的格子可以获的该格子的数,两人相遇的格子上的数两个人都不能拿。求A和B能拿到的数的总和的最大值。思路:对每个点递推求出它到4个人端...原创 2018-09-17 20:21:18 · 298 阅读 · 0 评论 -
HDU - 1561 The more, The Better(树形dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1561题目意思:中文题。思路:树上背包,当u=0(即在根节点时),往下dp可以不选自己,因为自己无价值。其他情况就必须选自己(因为不选自己就无法选儿子)。具体看代码代码:#include <bits/stdc++.h>#define INF 0x3f3f3f3f...原创 2018-07-24 17:29:53 · 163 阅读 · 0 评论 -
HDU - 2196 Computer(树形dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196题目意思:求每个点在这棵树中的最长距离思路:从一个点找最短路径,要么往儿子找,要么往父亲找,这就出现了两个递推方向。1.所以从根节点开始往下遍历,找出每个点往下找的最长距离,记录下来dp[x][0]。这里顺便记录下次长距离,下一步用dp[x][1]。2.往父亲方向找:如果发现父亲开...原创 2018-07-23 22:48:35 · 169 阅读 · 0 评论 -
HDU - 1520 Anniversary party(树形dp基础)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520题目意思:每个点有权值,父节点和子节点不可以同时选,求最大权值和思路:dp[x][0]表示x这个点不选,dp[x][1]表示这个点选,to代表子节点,然后再dfs自底向上遍历一遍。dp[x][0]+=max(dp[to][0],dp[to][1]);dp[x][1]+=dp[to...原创 2018-07-23 20:52:51 · 202 阅读 · 0 评论 -
HDU - 1160 FatMouse's Speed(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160题意:给你一堆重量和速度,要你求重量越来越重,速度越来越慢的最多个数并输出思路:就是一个两个条件的LIS和打印路径,先按重量排一下序,然后LIS,用p数组记录前驱,然后打印就行了代码:#include #define INF 0x3f3f3f3f#define lson原创 2017-11-28 22:49:18 · 176 阅读 · 0 评论 -
HDU - 1069 Monkey and Banana(dp)
题目链接:https://vjudge.net/problem/19392/origin题意:给你n种长方体,每种有无数个,现在问你把一个个长方体往上叠(上面一个的长和宽要小于下面的长和宽)能叠出的最大高度是多少思路:首先确定好长和宽(定义好长大于宽),然后每种长方体就可以有三种,存好这些长方体之后将他们按x,y从大到小排序,dp【i】表示以i为堆顶的最大高度,最后就可以从大到小依次推出d原创 2017-11-14 21:50:03 · 166 阅读 · 0 评论 -
HDU - 1087 Super Jumping! Jumping! Jumping!(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087题意:求上升子序列和的最大值思路:和LIS相似,但这个是和的最大值,那么只需要吧dp【i】初始化为本身再把+1的长度改为+a【i】就行了,只要理解了dp,活用就简单了。代码:#include #define INF 0x3f3f3f3fusing namespace s原创 2017-11-15 14:07:24 · 156 阅读 · 0 评论 -
HDU - 1176 免费馅饼(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176题意:中文题思路:一开始不知道怎么下手(dp还是理解不够啊),看了下题解, 说是一个数塔问题,我仔细一想,好像是这么个道理,就是将一个点可以往下延伸相邻的三个节点,然后从后往前推,最终得到最初状态的值,dp【i】【j】表示第i秒j的位置最多有多少个。注意:初始状态是0秒而不是1秒,所以原创 2017-11-15 14:57:18 · 280 阅读 · 0 评论 -
POJ - 3616 Milking Time(dp)
题目链接:http://poj.org/problem?id=3616题意:给许多时间段和这些时间段的收益,并且一个时间段做完后要隔r时间才能进行下一个,问你收益最大为多大思路:仔细一想就是一个把每个时间段任务看成一个点的LIS,只不过要先按时间排一下。代码:#include #include #include #include #include #include原创 2017-11-30 15:37:38 · 184 阅读 · 0 评论 -
HDU - 1257 最少拦截系统 (dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257题意:中文题0.0思路:dp【i】表示前i个高度最少需要多少个系统,a【i】表示第i个系统的当前高度(最矮高度),每次只需要顺序遍历a就可以知道需不需要新的系统,具体看代码代码:#include #define INF 0x3f3f3f3f#define lson l,原创 2017-11-26 15:24:06 · 207 阅读 · 0 评论 -
HDU - 3339 In Action(最短路+dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3339题意:是n个发电站,m条路,每条路有各自的距离,每个发电站有各自的发电量,现在需要炸毁它们,一辆坦克只能炸毁一个发电站,而且需要炸毁的发电厂的发电量需要大于所有发电站所产生的总电量的一半,求坦克走的最短距离思路:先用最短路求出起点到各点的距离,然后01背包得出大于一半电量时最短的距离就行了原创 2017-12-05 19:54:03 · 185 阅读 · 0 评论 -
HDU - 2159 FATE(二维费用背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159思路:二维费用背包即为同时有两个约束条件,dp数组多加一维,循环也多加一维,其他的一样,具体看代码代码:#include <bits/stdc++.h>#define INF 0x3f3f3f3f#define lson l, m, rt<<1#define rson...原创 2018-04-09 21:43:07 · 192 阅读 · 0 评论 -
HDU - 2602 A - Bone Collector(dp)
Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave …The bone collect原创 2017-03-16 22:49:12 · 211 阅读 · 0 评论