
动态规划
文章平均质量分 75
yqcr
这个作者很懒,什么都没留下…
展开
-
换根dp入门小结
换根dp释义:换根dp应该可以算作树形dp的一种。在一般的情况下我们进行树形dp的时候常常都会以一个固定的节点来作为根节点,但换根dp故名思意就是在进行树上dp操作时会需要进行换根操作的一类特殊的树形dp(个人理解)进行换根的套路操作:1、在树上自底向上进行dp操作2、在树上自顶向下进行dp操作3、根据题目要求计算答案接下来以具体的题目作为例子进行换根dp的练习:一、树的中心题目链接题意一目了然是要叫我们找到当前树中到其他节点最远距离最近的点的距离。思路:分析题意首先是要明确树中节点的原创 2021-07-10 20:47:19 · 765 阅读 · 1 评论 -
最大上升子序列和(基础dp)
写这篇博客一是因为这道题比较经典,而是为了水博客。思路:和开餐馆很像(其实就是改变了一下判断条件)判断前i项的最大上升子序列和就是第i项的值加上前面i-1项最大上升子序列和中比第i项小的且和最大的序列和,如:第i项值为5,前面i-1项所代表最大和且项值小于5的是项值为3的项所代表的最大上升子序列和为4,则第i项所代表的最大上升子序列和就为5+4=9。由此的递推式:ans[i]=max(ans...原创 2020-04-29 20:42:26 · 486 阅读 · 0 评论 -
开餐馆(基础dp)
思路:将第i家店与前i-1家店分别比较位置如果位置合法,则判断到该店为止的前面所有店的总利润加上第i家店的利润和是否大于当前i家店所取得的利润和(因为前面有些店可能彼此间位置不合法,造成了不同位置店能取得的总利润不同),以此类推得到递推式:ans[i]=max(ans[i],p[i]+ans[j])。最后再判断出所有位置上的店能取得的最大总利润即可。ac代码:#include <io...原创 2020-04-29 20:21:34 · 481 阅读 · 0 评论 -
大盗阿福(动态规划)
突然用动态规划的方式思考问题还不适应。。。思路:对于第i家店铺都有两个选择:盗 or not。如果不盗的话那么第i家店铺的现金其实就等于前i-1家店铺的现金,如果盗的话那么就等于前i-2(因为不能相邻)家店铺与第i家店铺的现金和。ac代码:#include <iostream>#include <cstdio>#include <cstring>#i...原创 2020-04-28 23:09:49 · 322 阅读 · 0 评论 -
数字组合(01背包)
就是01背包小小变形一下就不太会做了。。。。思路:当前和的方案数等于当前和减当前和当去当前正数的方案数,如:当前正数为2,和为5的方案数就等于3(5-2)的方案数,和为3的方案数又等于1(3-2)的方案数。又因为在每一种方案中每个数字只能使用一次,所以采用01背包。状态转移方程式:dp[j]+=dp[j-w[i]]。ac代码:#include <iostream>#incl...原创 2020-04-28 19:09:49 · 262 阅读 · 0 评论 -
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
第一次尝试多重背包,只想出来把多重背包中的有限次转化为01背包里的每一次来解决一个变形的01背包问题。代码:#include <iostream>//多重背包#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define int lon...原创 2020-04-27 17:42:21 · 153 阅读 · 0 评论 -
湫湫系列故事——减肥记I(完全背包)
中文题意不用解释。思路:因为没有认真看输入输出,所以直接先用了01背包试水然后果然发现样例都不能过,认真看了样例之后才发现每样吃的都可以无限次的吃,所以这是个完全背包的题,直接上完全背包板子就完了。ac代码:#include <iostream>#include <cstdio>#include <cstring>#include <algo...原创 2020-04-27 16:36:19 · 222 阅读 · 0 评论 -
饭卡(01背包+思维)
难得的一道中文题不用那么费力翻译题意。实话这道题看了题以后就直接查的题解(因为太菜)正解思路:因为余额小于5以后就不能在使用饭卡,所以我们可以直接对余额-5进行01背包求最大使用,但因为还要求余额最小,就想在余额最接近5的时候能减的最多,那么我们就要在余额最接近5的时候减去最大的价格,对应的因为每样菜只能买一次所以在01背包的时候就要跳过最大价格的菜以便最后能减去最大价格的菜。ac代码:...原创 2020-04-27 12:22:20 · 170 阅读 · 0 评论 -
Bone Collector(01背包模板)
题意:正常的01背包套路题意介绍两种模板代码:一维数组AC代码(优先推荐):#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;#define int l...原创 2020-04-26 19:35:51 · 105 阅读 · 0 评论 -
数的计算 (递归)
洛谷新手村的题,感觉自己简直菜的一批,起初老实递归做TLE了,仔细读才发现还有一丝动态规划的味道。。。。附代码:#include <iostream>using namespace std;int A[1000];int digui(int a){ int k=1; for(int i=1;i<=a/2;i++){ if(A[i]!=0)...原创 2020-03-07 21:28:28 · 887 阅读 · 0 评论