动态规划
文章平均质量分 70
个人动态规划学习总结
new出新对象!
你以为会有简介?我很摸鱼的,好不好。
展开
-
树上dp+分组背包类问题
今天也是无意间看到了一个树上dp+分组背包类的问题,有些难度的,不好想的嘞,话不多说直接看题。原创 2024-08-29 22:25:44 · 3539 阅读 · 7 评论 -
树上dp学习总结2
今天也是侥幸刷了两道树上dp的问题,第一个还算简单,但是第二个真的可以说是我碰到的蓝题之首,做了一个晚上我只能留下了不争气的口水(太饿了,该吃夜宵了)思路:这题是我真没想到的,巨难的题目,五个状态转移方程,看了大犇的代码才会写,只能说我还是个小蒟蒻。f[i][3]表示可以覆盖到从节点i向上-1层的最小消防站个数。f[i][0]表示可以覆盖到从节点i向上2层的最小消防站个数。f[i][1]表示可以覆盖到从节点i向上1层的最小消防站个数。f[i][2]表示可以覆盖到从节点i向上0层的最小消防站个数。原创 2024-07-31 23:18:43 · 521 阅读 · 0 评论 -
换根dp学习总结3
我也不想搞这么多,,因为我还是个蒟蒻。算了蒟蒻继续写这次的总结了。原创 2024-07-31 22:36:43 · 438 阅读 · 0 评论 -
换根dp——练习2
因此我们只需要找到第一次dfs先预处理找到所有边包含其子节点,然后我们让1先作为根节点找到,然后进行第二次dfs进行动态规划,换根寻求最大值。题解:这题也是比较经典的,我们在第一次dfs中先预处理出所有以1为根结点,所有点的需要翻转的路线,在第二次dfs中,我们会发现状态转移方程。我们会发现换根过后,我们的状态转移方程为dp[u]=dp[v]-sz[u]+n-sz[u],如果v是父节点,u是子节点,如果路径是v->u,那么f[u]=f[v]+1;反之,则是f[u]=f[v]-1;原创 2024-07-26 00:05:39 · 159 阅读 · 0 评论 -
换根dp(思路+例题+总结)
树上 DP 中的换根 DP 问题又被称为,通常不会指定根结点,并且根结点的变化会对一些值,例如子结点深度和、点权和等产生影响。通常需要两次 DFS,(可能是节点数,也有可能是节点上的权值和),点权和之类的信息,。我们在这里说明一下,两次dfs都要做什么我们的第一次dfs是为了我们的第二次dfs是为了。原创 2024-07-24 23:23:41 · 414 阅读 · 0 评论 -
树上dp总结
题解:这题类似背包思想吧,有两种状态,只有来与不来,本人来了,那么下属一定不来,本人不来,下属可以来可以不来,f[ i ] [ j ]表示对于 i 这个人,来或者不来的最大价值。题解:树的每一个节点的值都是1,因此我们的dp[ i ]的初始化都为1,然后 我们的状态转移方程为。我们的状态转移方程就是dp[ v ]+=(0LL,dp [ u ]) (v是父节点,u是子节点)dp[ i ] [ j ]表示的是以i为根节点,子节点数为j的最大价值。原创 2024-07-24 15:47:12 · 339 阅读 · 0 评论 -
背包问题(第k优解问题)
这篇博客先说一道洛谷蓝题(实际难度其实可能也就是在橙题左右,难度不大,请放心食用)原创 2024-06-06 16:20:29 · 896 阅读 · 0 评论 -
动态规划(01背包+并查集)
题意:就是说有n朵云,每朵云有自己的价钱(重量)和价值(价值),还有我自己现在有钱的数目(背包),然后还告诉你,哪几朵云是属于捆绑销售的,我们在面对捆绑销售要一次性买了,因而我们可以看出来,这题其实就是并查集+01背包,并查集体现在捆绑销售,连通性问题思路:先用并查集将所有云进行连通,将连通的物品的价钱和价值累加到一个元素里面,然后进行01背包就可以秒了。原创 2024-06-06 12:28:04 · 375 阅读 · 0 评论 -
今日份动态规划学习
这题是说,给我们一个游戏界面,界面的长度为n(水平距离),高度为m(竖直距离),然后有k个管子,告诉你他下沿部分长度和下沿部分长度,然后对于每单位的水平距离,都有相应的x[i]上升距离和y[i]下降距离,然后问你达到游戏地图的最右端的最小步数是多少,要是无法达到最右端,问你最多能通过几个管子。(1)上升:dp[i][j]=min(dp[i-1][j-x[i]]+1,dp[i][j-x[i]]+1);(3)下降:dp[i][j]=min(dp[i-1][j+y[i]],dp[i][j]);原创 2024-06-06 00:13:26 · 314 阅读 · 0 评论 -
今日份动态规划学习(二维01背包+01背包变形)
然后就可以想办法找出状态转移方程:有关是否要吃这个垃圾//不吃的生命//吃的生命然后就可以AC了。原创 2024-06-05 01:28:44 · 1003 阅读 · 0 评论 -
回退背包专题
题目意思,就是说有n个物品,然后每个物品都有自己的体积w[i],然后问你,如果第i个物品丢了之后,还能够装满这个背包的方法,然后遍历一遍i同时也要遍历一遍背包,因为背包的值是在1到m之间的任意值,对于同一个物品丢失,中间结果不需要用加空格隔开,就是连在一起。因为每次只考虑一个物品所以不搭边,因为这里的关系是关联关系,j-a[i]的方法总数是影响a[i]的方法总数,所以这边就算收到影响也是因为j-a[i]受到了影响,那么j-a[i]受到影响这个方法总数肯定是会受到影响的。解决这两个问题就是会了回退。原创 2024-06-03 01:29:21 · 749 阅读 · 0 评论 -
01背包变式例题
【代码】洛谷P2370yyy2015c01 的 U 盘。原创 2024-06-02 16:31:20 · 391 阅读 · 0 评论 -
完全背包(类买卖股票问题)
题解:这题我一开始以为是简答的那个买卖股票问题,但是做了之后发现并没有那么简单,但是经过思考时候,我发现其和完全背包类问题差不多,怎么说呢,我们首先用p[i][j]去统计每天每种物品的价格,然后以。(因为哪怕你是第1天买,第三天买,也可以理解为,1买,2卖,2买,3卖,这样就可以将差值看成物品价值)原创 2024-05-30 01:46:36 · 385 阅读 · 0 评论 -
动态规划之买卖股票大集合
题解:也是很经典的股票买卖问题,并且是可以买卖多次,且不需要手续费的,唯一和·上面不同的就是去推不持有股票的状态发生了一些变化,其他的一样,包括dp数组的含义啊,遍历顺序啊,初始化啊,什么的,都是一样的。这个相比于正常股票买卖问题在不持股状态分的更加细致,对于不持股状态可以分为,因为卖出的冷冻期导致不持股,或者是不是冷冻期导致的不持股,再算上持股状态,因此总共有三个状态,我们可以将其列举出来。3.初始化dp[1][0]=-p[1]//p[1]指的是第p天股票的价值,dp[1][1]=0;原创 2024-05-29 01:31:07 · 2100 阅读 · 0 评论 -
完全背包洛谷题单
题解:这题看到每个都可以卖出无限多个干草包,就应该想到完全背包,但又不同于普通的完全背包,普通的完全背包是让你通过对应的背包求出最大的价值,但是在这题理解上却是知道能够达到背包容量的最小价值,因此我们需要想个办法先将其变成已知容量去求最小价值,原创 2024-05-28 00:44:19 · 242 阅读 · 0 评论 -
完全背包+背包装满 总结
CF上一个div2的A题,那么必然就是一个简单的模版题了, 就是完全背包+判断背包装满是的最大的丝带数,然后就要用到我们的第一种情况了,让无效状态的值是一个int类型的最小值,然后正常去进行完全背包就可以直接拿下了。这个就相当于一个给我一个容量为f-e的背包,去判断这么个背包装满的时候,最少能装多少价值的物品,第二种情况,将无效状态设为int类型的最大值即可(我这边设置的是long long 类型的最大值,反正都是一个效果)2.如果可以恰好装满,那么恰好装满的时候的最大价值为多少。对于这种问题,背包的。原创 2024-05-27 21:40:54 · 396 阅读 · 0 评论