
动态规划
码海里的守望者
桃李不言,下自成蹊
展开
-
C. Add One
C. Add One题目连接题目大意给你一个数然后进行k次操作,要求让你对每一位加一。问k次操作后这个数会变成多少位。思路每一位加一变化时,只有9加一会多变出一位,那么进行预处理,用二维数组进行dp,先看9加1到10,多出1位,dp[0~9][k次操作],8加2呢是不是也是10,那么dp[8][2]=dp[9][1],那么这样子在不等于9的情况下,dp[i][j]=d[i+1][j-1],如果为9时,使得结果是由上面式子如何推出呢?,其实可以这样理解dp[9][j]=dp[10][j-1],而10原创 2021-04-12 21:58:48 · 642 阅读 · 0 评论 -
01背包
01背包有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi,求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。思路每个物品只有一件,考虑拿与不拿,在前i件物品中,拿第i件物品与不拿第i件物品,其限制条件是背包的空间,那么状态可表示为dp[前i件物品][背包容量],当前状态依赖于之前的状态,考虑前i件物品拿与不拿,状态转移方程可表示为,dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]),不拿第i件物原创 2021-04-06 18:33:57 · 80 阅读 · 0 评论 -
B2. K for the Price of One (Hard Version)
B2. K for the Price of One (Hard Version)题目链接题目大意给你n件商品,你可以一次性买k件商品,付其中最贵的商品一件的价格,或者你单独买一件,付一件的钱,问你最多能买多少件商品。思路n件商品价格先排序,从小到大拿,这样是最优的的,当一次性拿k件商品时,肯定在k-1件商品中选价格差最小的物品。在物品拿的物品数没有超过k时,先将前k个物品拿入,当拿的物品超过k时,那么就当前位置的到前k件物品的价格清除只付当前物品的钱,依次往后枚举#include <bi原创 2021-04-01 13:51:01 · 167 阅读 · 0 评论 -
C. Planar Reflections
C. Planar Reflections题目C. Planar Reflections题目大意给你一个粒子,n面墙,衰变周期为k,当遇到一面墙时,会分裂出有一个周期为k-1的粒子,并朝反向运动,当衰变周期变为1时,该粒子就不会分裂了,问会分成多少个粒子。思路每个粒子的运动方向不会改变,那么到最后不会分裂情况有2种,一种是粒子还能分裂但是,运动方向前面已经没有墙了,还有一种就是,粒子运动方向有墙,但衰变周期,已经变为了1,无法分裂。那么在往上一维考虑,在面临第i(i<n)面墙的粒子(k&g原创 2021-03-31 13:31:44 · 365 阅读 · 0 评论