
DP
文章平均质量分 59
光球层上的黑子
是个菜狗
展开
-
Crystalfly 简单树形DP
题意一颗树,在边上移动的时间花费为1。每个点有两个权aaa和ttt,aaa是一个只能被获取一次的点权,ttt代表当第一次进入这个点的相邻点后多久,这个点的第一个权aaa会消失。ttt的取值范围为111到333.现在你从111号点开始,任意游走,请问最大能获得的aaa是多少。思路需要特殊关注的是ttt的范围,一到三。假如我们任意跑到了一个点,那么他的子节点会立即开始计时。假如有若干个子树。我有如下两种抉择:走到其中一棵子树vvv,之后一路获取vvv子树的权,最后再去别的子树。第二种是我先前往vvv,之后原创 2022-05-01 19:51:05 · 754 阅读 · 0 评论 -
cf1561D 整除分块,DP。
题目链接https://codeforces.com/contest/1561/problem/D2题意n阶台阶下楼梯,可以一次走多步,可以一次从当前格子x走到x/z(下取整)格子。z可在1到x-1选择。问走到1的方案数。思路考虑dp第一种操作很容易处理。dp[i]可以直接由sum[i-1]转移过来。第二种操作其实也简单,我们就枚举z,然后从x/z转移不得了。但是这样的复杂度是n平方的,这时要用到一些优化。考虑整除分块,一个数的约数显然只有根号级别,也就是说我们枚举z的时候有很多是重复的,原创 2021-08-25 19:55:56 · 262 阅读 · 0 评论 -
hdu4283 区间DP
题目链接HDU最近炸了,看看题得了题意给一个序列,每个点有d i值,每个点的不满意度为出场次序减一乘di,有一个栈可以更改出场次序,问最小不满意度和思路区间DP,我们对于每个区间DP[i][j]维护他们的不满意度和,注意DP子问题不考虑父问题,也就是不需要考虑i前面出场的人对他们的不满意度影响。我们因为使用了栈,可以保证第一号用户在任意位置出栈,可以枚举他的出栈点为分界点。划分成两端区间,可以发现,第一段区间再操作时,因为入栈更晚,所以需要更早出栈,第一段区间正好满足。第二段区间入栈更晚,但没有原创 2021-07-09 17:03:20 · 296 阅读 · 0 评论 -
cf149d 区间DP
题目链接https://codeforces.com/problemset/problem/149/D题意给出一个匹配完成的括号串,每个括号都可以染成a,b两色或是不染,要求:每个匹配的括号需要有且仅一个染色相邻括号不可染同色,可都不染问染色思路复杂度O(n∗logm)O(n*logm)O(n∗logm)教训/收获代码在这里插入代码片...原创 2021-07-09 15:28:28 · 197 阅读 · 0 评论 -
LightOJ - 1422 区间DP
题目链接https://vjudge.net/problem/LightOJ-1422题意不同舞会穿不同衣服。可以随时按栈的方式穿脱。同一件衣服脱了不能重复利用,任何时候都可以穿多件衣服。问最小费衣物次数。思路看一堆题解没看明白,看一个博主的看懂了,这个题意可以如此等价,给定一个空序列,每次可以刷一个连续区间,每次刷会覆盖,问最小刷墙次数。设dp[i][j]是i到j区间答案。如果i和j颜色一致,那么我们可以选择i这里什么都不干,dp[i][j]可以直接由dp[i+1][j]转移来,否则不具有这个原创 2021-07-09 10:49:55 · 164 阅读 · 0 评论 -
acwing 284 区间DP
题目链接https://www.acwing.com/problem/content/286/题意给出树的欧拉序,树的子树结点有序,问树的可能形态数思路显然区间DP。我们让dp[l][r]为l-r的方案数,可以确定初值为dp[i][i]=1, 答案为dp[1][n]。考虑状态转移。我们不能枚举分界点个数与分界处,这样复杂度就起飞了。假设我们要枚举一个分界点,两个区间分别对应多个子树,那么可能出现重复。为了避免重复,我们可以考虑第一个子树的分界点k。比如l—r是这段区间,那么第一个子树我们令其为原创 2021-07-08 22:50:58 · 149 阅读 · 0 评论 -
cf 708C - Centroids 树的重心 思维 贪心
题目链接https://codeforces.com/problemset/problem/708/C题意给一棵树,你有一次删去任一边,加上任一边(必须维持树结构)的操作机会,问每个点是否可以经过(当然也可以不经过)操作成为重心。思路想复杂了先复习下重心,定义就是题中的,最大子树不超过N/2。重心最少一个,最多为相连两个,所有节点到重心距离和最小。我们考虑两个重心情况,对不是重心的任一点,我们可以断开重心间边,选择这个点和另一侧重心相连,显然全有解考虑单个重心情况,容易想到以下贪心做法:选择原创 2021-06-25 12:08:14 · 358 阅读 · 0 评论 -
p2014 树形DP 背包问题板子
题目链接https://www.luogu.com.cn/problem/P2014题意给你若干先修课-课程的关系,保证课程最多有一个先修课。每个课有自己的学分,最多选m门,问最大得分。思路容易发现是个树形DP的题目。我们考虑dp[x][i]为x结点最多选i门时最大收益,给出的图是一个森林,不妨建立虚拟源点0,答案即为dp[0][m]。考虑如何转移,树形DP中则为如何统计子树数据得到当前数据。显然,我们是在不同的子树选择一个dp状态相加再加上根节点的值。也就是类似一个分组背包。对于求解每个状态原创 2021-06-24 17:26:41 · 190 阅读 · 0 评论 -
P3478 STA-Station 树形DP 换根法入门
题目链接https://www.luogu.com.cn/problem/P3478题意一颗无根树,找出一根,使其子树到他自己的结点深度和最大思路换根法入门。我们处理无根树时,一般都是需要寻找(指定)一个根节点作为切人点的,比如我们调用dfs常常就是dfs(1,-1)开始,转移是dfs(y,x),人为的设置了树根。但当题目涉及多个树根的操作时,我们如果还是指定树根,显然会出现漏算。这时就需要换根法了,换根法的大概操作流程就是拆分任务,两次扫描。首先扫描出给定一根的一些数据,之后再考虑换掉根时原创 2021-06-23 21:50:46 · 274 阅读 · 0 评论 -
P6082 树形DP
题目链接https://www.luogu.com.cn/problem/P6082题意一棵树,每个点有收益(可负),经过一点获得其收益(多次经过不重复,一定获得不可放弃),每个点有最大停留次数(最小为2),起点为1,起点收益0,停留无限。问如何游览会最大化收益(可以在起点摸鱼不走)思路树形DPdp[i]代表i为根子树最大收益,首先明确一个点的限制li[i],让他只能前往li[i]-1个子树。而一个点的收益就应当是所有子树中满足限制的最大的正DP值之和。dp[i]=∑1li[i]−1dp[j]原创 2021-06-23 15:12:40 · 122 阅读 · 0 评论 -
P3574 [POI2014]FAR-FarmCraft 树形DP,贪心
题目链接https://www.luogu.com.cn/problem/P3574题意n点树,树根为1,穿越道路花费时间1,点带权。你需要遍历树,每个点会在被遍历到后执行操作,时间为权(你不需要在那里停留),最终当你回到1点后,你也需要开始执行时间为权的操作,思路复杂度O(n∗logm)O(n*logm)O(n∗logm)教训/收获代码在这里插入代码片...原创 2021-06-23 12:29:30 · 163 阅读 · 0 评论 -
概率DP算法总结
概率DP顾名思义,概率DP就是动态规划求概率的问题。一般来说,我们将dp数组存放的数据定义为到达此状态的概率,那么我们初值设置就是所有初始状态概率为1,最终答案就是终末状态dp值了。我们在进行状态转移时,是从初始状态向终末状态顺推,转移方程中大致思路是按照当前状态去往不同状态的位置概率转移更新DP,且大部分是加法。期望DP用于求解期望的DP。这类问题一般将dp数组存放的数据定义为到达终态还需要的期望值。那么初值设置就是终末状态期望为0,答案就是初始状态的dp值了。我们在进行状态转移时,一般是从终末原创 2021-06-22 21:54:43 · 2532 阅读 · 0 评论 -
HDU 4652 Dice 概率DP,推式子
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4652题意询问0mn,1mn。0mn代表m面骰子投出连续n个相同期望次数1mn代表m面骰子投出连续n个各不相同期望次数思路期望DP一卷数列压轴话不多说看图教训/收获TMD代码#include<cstdio>#include<iostream>#include<iomanip>#include<map>#include<unor原创 2021-06-22 21:24:15 · 147 阅读 · 0 评论 -
HDU4405 期望DP裸题
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4405题意0-n的n+1个点,初始0,每一次会扔骰子,1-6面等概率,扔到几走几步。同时有些地方有飞机道,走飞机道可以直飞(可以连续飞,确保只往后飞),问期望投骰子数思路首先题意似乎有些问题?好像如果有飞机道就一定要走,附一个我刚发的discuss http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=42005&messagei原创 2021-06-22 16:04:32 · 119 阅读 · 0 评论 -
NOIP2016 换教室 概率DP求期望
题目链接https://www.luogu.com.cn/problem/P1850题意v点e边带权无向连通图,给出n个三元组(a,b,p),第i个数对代表第i个时间段,默认要去a,但可以申请(开始前一次性全部申请完成,不允许中途更改申请)去b,且通过申请的概率为p。最多申请m次,问期望路径的最小值是多少。思路概率DP,我们定义dp[i][j][0]为第i阶段,使用了j次机会,本次不选择申请的期望路径,dp[i][j][1]类似,但是是这次选择申请的路径。我们考虑转移方程,求的是期望路径,期望原创 2021-06-22 10:35:07 · 167 阅读 · 0 评论 -
POJ 3071(Football) 直球概率DP+位运算
题目链接http://poj.org/problem?id=3071题意2^n个球队,n轮比赛,每次比赛是按序号排好,第一打第二,第三打第四,如此。输了直接淘汰,给出任意两支队比赛获胜概率,问最可能夺冠的队伍。思路概率DP,dp[i][j]代表第i只球队撑过了第j轮的概率,对所有dp[i][n]求个max即可。转移方程也好说,是dp[i][j]=dp[i][j−1]∗∑k与j可以对决(dp[k][j−1]∗p[i][k])dp[i][j]=dp[i][j-1]*\sum_{k与j可以对决}(原创 2021-06-21 22:04:46 · 250 阅读 · 0 评论 -
codeforces 431C - k-Tree 简单DP
题目链接https://codeforces.com/problemset/problem/431/C题意满k叉树,每一个节点边权依次为1-k,求起点为根,长为n,存在大于等于d的边权边的路径数思路复杂度O(n∗logm)O(n*logm)O(n∗logm)教训/收获代码在这里插入代码片...原创 2021-01-05 22:03:34 · 250 阅读 · 0 评论 -
导弹防御系统 ACwing187 最长上升/下降子序列+贪心+DFS
题目链接https://www.acwing.com/problem/content/189/题意导弹只能打掉严格递增或者严格递减的一段序列,求覆盖n个目标需要多少导弹思路如果只看严格递增或者严格递减就是导弹拦截的贪心做法,因为有严格递增或者严格递减的限制,所以在外面套一个搜索的壳就行了,注意维护全局变量ans,以便剪枝代码#include<cstdio>#include<iostream>#include<iomanip>#include<ma原创 2020-11-04 11:38:23 · 254 阅读 · 0 评论 -
导弹拦截 NOIP1999 dilworth定理裸题
题意n个导弹,一架大炮只能打击不上升一段序列中的导弹,求一架炮最多打几个炮弹,以及击落全部导弹需要几架炮思路复杂度O(n∗logm)O(n*logm)O(n∗logm)教训/收获代码在这里插入代码片原创 2020-11-04 11:04:41 · 189 阅读 · 0 评论 -
NOIP2000提高 方格取数 三维DP
题目链接https://www.acwing.com/problem/content/1029/题意n阶方阵,每个格子有值,从左上走到右下两次,不能取走同一格子的值两次,求取到的值的最大总和思路三维dp同时维护两个状态,dp[k][i1][i2]代表总共走了k-2步(为了编码方便),第一次处于i1行,第二次处于i2行时能取的最大值。因为步数固定了,所以列号也固定了,考虑转移方程,一共四个方向可以走到当前情况:第一次向右,第二次向下;第一次向下,第二次向右;第一次向下,第二次向下;第一次向右,第二原创 2020-10-29 18:33:36 · 193 阅读 · 0 评论