
dp
文章平均质量分 86
ACM dp
juruo_c
研一菜狗 致力于研究各种计算机底层技术
展开
-
【区间dp】 [HNOI2010]合唱队
题目链接思路:我们发现,对于目标序列的每一个区间[l,r][l, r][l,r]而言,最后一个进来这个区间的人要么在lll要么在rrr,那么我们可以定义f[l,r,0]f[l,r, 0]f[l,r,0]表示最后一个人从左边进入目标序列的[l,r][l,r][l,r]区间的所有方案数,f[l,r,1]f[l,r,1]f[l,r,1]表示最后一个人从右边进入目标序列的[l,r][l,r][l,r]区间的所有方案数。我们考虑转移:首先考虑f[l,r,0]f[l,r,0]f[l,r,0],由于最后一个人从左.原创 2022-02-21 09:30:10 · 382 阅读 · 0 评论 -
【背包dp】[NOIP2014 提高组] 飞扬的小鸟
题目链接思路:不难想到状态可以定义为:f[i][j]f[i][j]f[i][j]表示到达坐标(i,j)(i,j)(i,j)所需要的最小点击数我们考虑坐标(i,j)(i,j)(i,j)可以由哪些坐标(i−1,k)(i-1,k)(i−1,k)抵达。我们先考虑上升操作,由于上升操作可以点击无限次,那么可以套用完全背包的转移方式。对于下降操作,只有一次或零次,那么可以套用01背包的转移方式。用y[i]y[i]y[i]表示每次下降操作下降的高度, x[i]x[i]x[i]表示每次上升操作上升的高度。.原创 2022-02-21 09:53:33 · 247 阅读 · 0 评论 -
【树形dp】 [POI2014] FAR-FarmCraft
思路:由于是树形结构,我们直接考虑树形dp。定义f[u]f[u]f[u],表示从uuu出发,走完uuu的子树花费的最短时间,也就是子树中每一个点(走到的时间+点权)的最大值。我们考虑如何转移,用tim[u]tim[u]tim[u]表示走完uuu的若干子节点所代表的子树,返回uuu,所花费的时间。那么有f[u]=max(f[u],f[v]+tim[u]+1)f[u] = max(f[u], f[v] + tim[u] + 1)f[u]=max(f[u],f[v]+tim[u]+1),我们发现这个转移.原创 2022-02-22 08:15:43 · 163 阅读 · 0 评论