随笔分类 -  dp—树形dp

摘要:这是个假题吧... 首先显然上虚树了 然后我们考虑一下最优策略: 如果虚树两节点都是关键点,那么这两点之间至少选一个 如果一个节点本身是关键点,那么我们必须覆盖下下面所有点 如果一个节点本身不是关键点,那么这个点可选可不选,这一点要基于下面有多少个上来来决定 也就是说,我们在虚树上dfs的过程中需要 阅读全文
posted @ 2019-07-07 21:30 lleozhang 阅读(300) 评论(0) 推荐(0) 编辑
摘要:显然dp嘛 首先我们发现,蓝线的连接方式是有限的,具体的,对于每一个节点,其实只有两种可能的连线方式: 第一种:该节点是新来的节点,两个子节点是初始红线的两侧 第二种:该节点是新来的节点,一个子节点和该节点的父节点是红线的两侧 但是,初始是有一个节点的,因此我们考虑进行树形dp时以这个点为根 如果我 阅读全文
posted @ 2019-07-07 20:11 lleozhang 阅读(156) 评论(0) 推荐(0) 编辑
摘要:显然dp 考虑每个节点需要考虑的问题: 第一:这个点下面被覆盖的情况 第二:这个点对上面的贡献 据此我们设计状态: f[i][j]表示以i为根节点的子树中已经覆盖好了下面剩余层,只剩下上面j层还没覆盖 g[i][j]表示以i为根节点的子树中每个点都被覆盖了,而且还能向上覆盖j 阅读全文
posted @ 2019-07-05 21:58 lleozhang 阅读(166) 评论(0) 推荐(0) 编辑
摘要:首先是动态dp了嘛... 然后考虑怎么做:首先列出dp方程,大概长这样: f[i]=min(v[i],f[to]) 看着不太像动态dp呀... 考虑拿出重儿子的贡献,然后套模型,大概能构造出一个这样的东西: 设gi=fto[to!=son] $\begin{p 阅读全文
posted @ 2019-07-02 08:40 lleozhang 阅读(194) 评论(0) 推荐(0) 编辑
摘要:去年noip题啊... 这题动态dp裸题,因此直接套上去嘛! 动态dp板子看这里 设状态f[i][0/1]表示点i选/不选的最小花费,转移有 f[i][0]=f[son][1] f[i][1]=wi+min(f[son][0],f[son][1]) 同样设一 阅读全文
posted @ 2019-06-26 20:37 lleozhang 阅读(129) 评论(0) 推荐(0) 编辑
摘要:动态dp是一个毒瘤且奇葩的东西... 然而noip2018出了这个东西... 因此... 以一道题为例吧:给出一棵带点权的树,每次修改一个点的点权,查询这棵树的最大权独立集(可以理解为每次询问一遍“没有上司的舞会”) 首先考虑暴力: 设状态f[i][0/1]表示以i为根的子树,点i选或不 阅读全文
posted @ 2019-06-26 19:04 lleozhang 阅读(218) 评论(0) 推荐(0) 编辑
摘要:容斥好题 首先我们考虑,如果没有节点之间一一对应的限制,我们可以这样dp: 设状态dp[i][j]表示以i为根节点的子树,节点i与节点j对应的方案数 那么转移就是$dp[i][j]=\prod_{son_{i}}\sum_{k=1}^{n}map[j][k]dp[son_{i}] 阅读全文
posted @ 2019-06-20 20:06 lleozhang 阅读(218) 评论(0) 推荐(0) 编辑
摘要:首先很容易看出这是一个树上多重背包问题 设状态f[i][j]表示以i为根的子树中利用的体积是j 但是题目中有要求:选择的点集必须是一个联通块 这要怎么处理? 点分治! 首先我们利用点分治的思想,每次拎起一个根节点进行处理,要求这个根节点必选,然后在子树内进行dp 为了保证根节点必选(至少 阅读全文
posted @ 2019-04-30 11:03 lleozhang 阅读(161) 评论(0) 推荐(0) 编辑
摘要:题目描述:这里 发现还是点对之间的问题,于是还是上点分 只不过是怎么做的问题 首先对每条边边权给成1和-1(即把原来边权为0的边边权改为-1),那么合法的路径总权值一定为0! 还是将路径分为经过当前根节点和不经过当前根节点的,对不经过当前点的递归处理 那么我们讨论经过当前根节点的路径算法即可 可以发 阅读全文
posted @ 2019-04-28 18:50 lleozhang 阅读(154) 评论(0) 推荐(0) 编辑
摘要:非常好也是比较难的题 首先,不难看出这是一道树形的概率dp 那么我们就要考虑转移 我们发现,一个点能充上电的概率是这个点本身通电的概率+这个点的子节点给他传过来电的概率+这个点的父节点给他传过来电的概率 但是这里的加法都是概率的加法,也就是说满足如下公式: 那么如果是三元事件,这个公式会更为复杂,所 阅读全文
posted @ 2018-11-06 08:06 lleozhang 阅读(142) 评论(0) 推荐(0) 编辑
摘要:非常好的一道题,可以说是树形dp的一道基础题 首先不难发现,:如果我们把有关系的两个点用有向边相连,那么就会形成一个接近树的结构。如果这是一棵完美的树,我们就可以直接在树上打背包了 但是这并不是一棵完美的树,甚至并不是一棵树,因为: 首先,由于题中有n个点,还有n条边,所以有很大的几率出现环! 而且 阅读全文
posted @ 2018-11-06 07:25 lleozhang 阅读(111) 评论(0) 推荐(0) 编辑
摘要:蜜汁树形dp... 首先分析一下:他要求一条边至多只能经过两次,那么很容易会发现:从x到y这一条路径上的所有边都只会被经过一次。(如果过去再回来那么还要过去,这样就三次了,显然不合法) 那么其他能产生贡献的部分就只有一下几个部分:x,y的子树内部,LCA(x,y)的上半部分的树以及x-y路径上的点向 阅读全文
posted @ 2018-11-02 19:22 lleozhang 阅读(210) 评论(0) 推荐(0) 编辑
摘要:这是一道...卡了我一个月的树形dp... 我真是太弱了... 其实仔细想想,这题的核心思路并不是特别复杂,但是的确存在不小的难度 作为一个看过全网基本所有题解+标程才弄明白这题到底怎么回事的蒟蒻,我努力把所有东西揉到一起让各位看官一眼看懂... 首先我们简化一下题意:给定一棵满二叉树,每个叶节点有 阅读全文
posted @ 2018-10-29 20:31 lleozhang 阅读(117) 评论(0) 推荐(0) 编辑
摘要:非常好的树形dp 首先,有个很显然的状态:记状态f[i][j]表示以i为根节点的子树中选了j个叶节点作战,那么很显然有转移:f[i][j1+j2]=f[i<<1][j1]+f[i<<1|1][j2] 所以我们只需爆搜一发状态,然后每次更新即可 但是有个问题:当我们搜到最底层的叶节点时,由于他的贡献与 阅读全文
posted @ 2018-10-28 16:02 lleozhang 阅读(249) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-10-22 20:10 lleozhang 阅读(6) 评论(0) 推荐(0) 编辑
摘要:什么鬼noip互测题... 这题很显然是树形dp,但设计状态以及转移是个难点 记状态f[i][j][k]表示以i为根节点的子树,离i最近的祖宗节点编号为j放了虫洞(伐木场?),i的子树内放了k个伐木场的方案数 设to为i的某个子节点,当i不放伐木场时,有: dp[i][j][k]=min(dp[to 阅读全文
posted @ 2018-10-08 19:50 lleozhang 阅读(74) 评论(0) 推荐(0) 编辑
摘要:我说这是我们的noip互测题你信吗... 首先介绍一下仙人掌(略,参见题面) 然后我们思考一下怎么做: 首先,如果原图是一棵树,那么做法是很显然的(树上最长链嘛) 但是,图是一个仙人掌,所以树上最长链的做法有bug 所以我们考虑:是否能将树上的做法移接到仙人掌上即可 怎么移接? 我们看到,根据仙人掌 阅读全文
posted @ 2018-10-08 19:48 lleozhang 阅读(151) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-07-24 16:45 lleozhang 阅读(6) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-07-24 16:40 lleozhang 阅读(1) 评论(0) 推荐(0) 编辑

levels of contents
点击右上角即可分享
微信分享提示