dp
stay fool
这个作者很懒,什么都没留下…
展开
-
abc 326 e
求和里的乘法提取公因式后 不变捏。有点脑子但不多时刻,原创 2023-10-28 22:24:57 · 76 阅读 · 0 评论 -
P1266 速度限制 ( dij分层 + 图上dp
其实并不是真的建立分层图,只是有分层图的思想,或者是dp思想在里面。dp[i][j] // 到达 i 点速度是 j 的花费。原创 2023-10-17 22:43:20 · 940 阅读 · 1 评论 -
abc 324 f ( 拓扑 + dp + 二分
二分一个答案,重新设置边权 bea - mid * cost;原创 2023-10-15 11:38:35 · 127 阅读 · 0 评论 -
arc 166 b
类似就是状态枚举 , 考虑每个状态的花费 , 然后直接转移。和网络赛没做出来的dp挺像的。原创 2023-10-09 19:17:25 · 86 阅读 · 0 评论 -
abc 323 e (背包dp
a/b 关于p的逆元 (a * x)% p 其实x就是b的逆元。本质上就是一个枚举子集的问题 ,无限背包的思想属于是。s[ i ] 表示第 i 秒刚好有一首曲子结束的概率。然后就是求逆元的问题。原创 2023-10-08 12:23:30 · 106 阅读 · 0 评论 -
P3052 [USACO12MAR] Cows in a Skyscraper G ( 状压dp
【代码】P3052 [USACO12MAR] Cows in a Skyscraper G ( 状压dp。原创 2023-10-05 17:53:58 · 51 阅读 · 0 评论 -
P4544 [USACO10NOV] Buying Feed G ( 单调队列dp
【代码】P4544 [USACO10NOV] Buying Feed G ( 单调队列dp。原创 2023-10-02 17:38:24 · 58 阅读 · 0 评论 -
P4124 [CQOI2016] 手机号码(数位dp
不同的数的dp状态其实只有那个limit不同,把limit放在状态外就能实现一次memset。这题具体的就是要记录两位数字,其他的就和一般数位差不多。原创 2023-09-30 15:16:06 · 103 阅读 · 0 评论 -
P1273 有线电视网 ( 树上背包
【代码】P1273 有线电视网 ( 树上背包。原创 2023-09-30 13:07:13 · 67 阅读 · 0 评论 -
abc 321 f (背包
考虑每新加入一个物品,那么dp[i] = dp[i] + dp[i-x];这个是需要从后往前遍历,因为你修改的时候,只添加了一个物品x ,所以你的dp[i-x] 是没修改前的值应该,类似01背包的滚动。考虑删除一个物品 那么 dp[i] = dp[i] - dp[i-x] 删除一个物品后,那么dp[i-x] 中的一个x就不能对dp[i]有贡献了,这个是需要从前往后递推的,去掉x的i方案数 = 原来的 i 方案数 - 现在 (i - x) 的方案数 (达不到i的方案数)计数类dp的背包dp。原创 2023-09-26 09:34:04 · 55 阅读 · 0 评论 -
P3089 [USACO13NOV] Pogo-Cow S
枚举 i 作为跳板, 对于下一个位置 i x[i] - x[j] 逐渐增大的,利用单调性, dp[j][i] 表示到第j个点 , 上一个点是 i 的 最大值。所以对于上一位的 k 可枚举的数目也是逐渐增大,我们只需dp[i][k]的最大值。原创 2023-09-20 10:55:13 · 81 阅读 · 0 评论 -
ICPC 2023 网络赛 j (线性dp
可以把上一个状态的所有和 求出来,然后把这个字母的状态去掉。因为转移的时候只关心上一个和 当前字母不同的 ,因为输出的时候没有先加mod , 而wa,破大防。原创 2023-09-17 22:58:13 · 248 阅读 · 0 评论 -
ICPC 2022 网络赛 d ( 数位dp + 二分
每个数的limit状态不一定相同 , 把这个作为搜索的内容,其他的都可以设计再dp状态里面。考虑到各个数的状态 , 可能会存在一些共同的,因此不一定每次都要memset。原创 2023-09-16 15:02:25 · 81 阅读 · 0 评论 -
abc 319 f ( 状压dp + 树上bfs
1.如果当前状态为 i 想喝第 j 瓶药水,那么这个药水j的 父节点是必须的走到的。dp的值一定是变大的,所以我们新建一个堆,继承 i 里面的所有值(状态 i 杀不掉的)首先一定是尽量先打怪再吃药,于是就可以通过枚举药水的喝法 , 解决问题。2.当前这个的如果存在一个祖先为药水,那么祖先必定的被喝,然后就开始从小到大,开始刷怪,遇到刷不动的怪就结束。id 记录当前位置的编号,pos 记录当前编号的位置。对于每个状态都开一个堆,堆里剩下的都是杀不掉的怪。同时将 j 药水 可达的怪兽点也加入到堆中,原创 2023-09-14 17:18:06 · 72 阅读 · 0 评论 -
P2607 [ZJOI2008] 骑士 (树形dp
基环树 ,破环为链, 分别把两个点作为根 进行树dp。考虑到是森林,而不是单棵树, 所以每个点都要进行访问。原创 2023-09-13 20:26:53 · 61 阅读 · 0 评论 -
P4316 绿豆蛙的归宿 ( 拓扑 + 期望dp
期望dp的 常规设法 , 很有可能是从已知的最终态期望 去 反推需要的期望。原创 2023-09-12 21:39:33 · 82 阅读 · 0 评论 -
P1365 WJMZBMR打osu! / Easy ( 期望dp
【代码】P1365 WJMZBMR打osu!/ Easy ( 期望dp。原创 2023-09-09 16:58:15 · 37 阅读 · 0 评论 -
P1654 OSU! ( 期望dp
用算贡献的思路,考虑i + 1点能对当前 第 i 个点提供多少期望。这么看来期望dp算明白几个期望之间的关系也很重要捏。原创 2023-09-09 16:51:30 · 133 阅读 · 0 评论 -
P2111 考场奇遇 ( 期望dp
dp[i][j] 表示第i个题目做对了j题的 dp[i][j] = t * dp[i-1][j-1] + (1-t) * dp[i-1][j]可以像背包一样省掉一维。原创 2023-09-09 10:32:18 · 228 阅读 · 0 评论 -
JSCPC f ( 期望dp
【代码】JSCPC f ( 期望dp。原创 2023-09-09 10:01:15 · 151 阅读 · 0 评论 -
P2719 搞笑世界杯 (期望dp
dp[i][j] 可以 等概率的转移到 dp[i-1][j] 和 dp[j][i-1]考虑一种票全部卖完,另一种有大于等于2 张的所有情况都为合理情况。原创 2023-09-08 19:06:30 · 243 阅读 · 0 评论 -
abc 314 e (期望dp
每次计算转第 j 个转盘所能达到 i 分的期望总和的代价,总和除以非 0 的次数 ,就是平均代价。期望dp的状态应该从尾推头更加和理。贴个别人的博客的解释。原创 2023-09-08 18:29:15 · 131 阅读 · 0 评论 -
P4310 绝世好题
那么我们只需要当前的dp情况 dp[001] = 5 dp[010] = 5。或者这么说,一个数字011接到001和010 后的长度分别为4 , 5。所以对于每个数,我们只关心他的上一个数 哪一位为 1。因为是相邻两个数之间的 & 不等于1。原创 2023-09-07 16:35:31 · 76 阅读 · 0 评论 -
P1220 关路灯 ( 区间dp
这种区间dp主要就是没有具体的区间了,都转化成了点点之间。和另一个题 Sue的小球基本一摸一样,原创 2023-09-07 15:15:00 · 293 阅读 · 0 评论 -
P2466 [SDOI2008] Sue 的小球 ( 区间dp
f[i][j][0/1] 接了 i , j 段的所有球后停在 i or j,的最下损耗。原创 2023-09-07 15:11:56 · 131 阅读 · 0 评论 -
P4395 Gem 气垫车(树形dp
【代码】P4395 Gem 气垫车(树形dp。原创 2023-08-30 12:19:25 · 60 阅读 · 0 评论 -
P2396 yyy loves Maths VII(状压dp
所以只能改成每次枚举从最低为开始用lowbit找1 挺无语。只能说很无语的一道题,分要卡枚举每一位。原创 2023-08-29 18:15:26 · 188 阅读 · 0 评论 -
P2167 [SDOI2009] Bill的挑战 ( 状压dp
先考虑维护每个位置的字母配对情况,match[i][j] 用二进制数字表示哪几个串能匹配。考虑一个状态 st,他能走向的下一个状态是 st 和 match[i+1][j] 的交集。如st = 011 match = 110 可以走向 010。没想到用刷表法过了,弱。原创 2023-08-29 12:34:29 · 88 阅读 · 0 评论 -
894 div3 e (背包
考虑 x 用 w 消灭, y 用 f 消灭 (对称的,会有反过来的情况)考虑将怪物分成俩个集合 x, y 其实 x + y = sum;bitset 的本质就是一个特别长的二进制数字,可以进行各种位运算操作。因为只有0 1,俩种价值,表示能否达到,可以用bitset优化。那么枚举出来 子集 x y 就是sum - x。01背包问题 前n个物品,容量为j 是为可以达到。那么001110111 左移加上 | 运算。那么就把问题变成了枚举sum的所有子集。如果000000111。原创 2023-08-26 22:08:44 · 245 阅读 · 0 评论 -
P3572 PTA-Little Bird ( 线性dp + 单调队列
虽然想到了就是单调队列优化dp,但没想到就是再入队的时候判断一下是否更优。出队比较元素有俩个 ,一个是疲劳值,一个是高度,2.队尾疲劳值和第 i 相同, 当高度低, 出队。1.队尾疲劳值大,直接出队,原创 2023-08-21 18:16:11 · 111 阅读 · 0 评论 -
P9574 Break Through the Barrier
考虑一个b能不能通过后缀变换成 t 那么必定有序了 bt bt bt bt tb。只要考虑 i + 2 的位置的b能不能变成t。预处理一个tb的位置。原创 2023-08-20 21:52:08 · 169 阅读 · 0 评论 -
P2015 二叉苹果树 (树形dp
将数值上的苹果 放到节点上去,然后跑留下几个节点,答案就是dp[1][q+1]其实像一个树上分组背包问题,只是由于只有俩个种类,也不用跑三重循环了。原创 2023-08-15 11:17:39 · 144 阅读 · 0 评论 -
P4342 [IOI1998] Polygon ( 区间dp
破环为链 不说了,大概就是一个环可以看出分别 从 1 ,2, 3 ......n处断开的n条链,所以翻倍一下。因为存在负数×负数等于正数的情况,所以还要同时记录整个区间的最小值。原创 2023-08-14 22:01:46 · 180 阅读 · 0 评论 -
CF607B Zuma(区间dp
h[i] == h[j] 那么在消除[i + 1,j - 1]过程中可以消除掉。原创 2023-08-14 12:24:17 · 41 阅读 · 0 评论 -
P3205 [HNOI2010] 合唱队 ( 区间dp
设状态dp[i][j][x] 表示 i 到 j 这个区间,是以最左还是最右的数字结尾,蛮水的一个区间dp吧算是。原创 2023-08-14 10:57:35 · 77 阅读 · 0 评论 -
P3694 邦邦的大合唱站队(状压dp
枚举末尾的数字是 j , 共sum[j] ,那么从【1,s-sum[j]】 就为已经排号的队伍,从【s-sum[j]+1 , s】 为需要排的队伍,在这个区间的j可以不进行移动,dp[x] 表示将x的队伍排好的最小移动 ,于是可以枚举末尾的队伍是哪个。因为排好的队伍长为 【1,s】 s表示状态x下的总人数,通过前缀处理前i个人 , 队伍j的人数。是一道很好的状压题目。原创 2023-08-12 18:07:43 · 83 阅读 · 0 评论 -
abc 313 e (dp
所以扩展n次后就会有 (y-1)* n + 1 个数字,要想数字越来越少,那只有y = 1这种情况。对于一个数x,每次会变成 x 每次会扩展成 y个数字,所以不能存在相邻的数字都不为1。假设序列 xy.......原创 2023-08-06 10:54:36 · 129 阅读 · 0 评论 -
CodeTON Round 5 c ( dp
很明显这是一个二重循环,但对于在一次 j 的循环中,dp[j-1] + i - j +1 其中i是不变的,所以只需要记录下每个数字的最大的 dp[j-1] - j + 1 就可以在O(1) 时间内实现转移。先考虑构建一个朴素的做法。原创 2023-08-02 17:38:13 · 205 阅读 · 0 评论 -
P2585 [ZJOI2006] 三色二叉树(树形dp
dp[i][x] 第i个节点颜色为x时 绿色的最多数目。学会递归建树的操作,其实和tire树是很像的捏。原创 2023-07-27 21:24:18 · 262 阅读 · 0 评论 -
P1040\ 加分二叉树
中序遍历,左子树在左边,根在中间,右子树在右边。树形dp主要就是递归啊。原创 2023-07-27 15:42:01 · 49 阅读 · 0 评论