上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 35 下一页
摘要: 传送门 仍然是大规模解决树上路径的问题。 显然是点分治,但是因为我太菜了想不到应该怎么点分治,还是借鉴dalao的经验才想出来。 我们用tmp[i]表示在当前子树中,经过长度为i的路径最少需要几条边。那么转移的方程就是tmp[m] = tmp[m-dis[i]] + d[i],其中m是要求的路径长度 阅读全文
posted @ 2018-09-14 22:41 CaptainLi 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题看起来是大规模解决树上路径的问题……那就是点分治啦。 既然我们要求的是树上长度为3的倍数的路径有多少条,那么我们不妨对每条路径的长度取模,这样的话我们实际上就获得了一堆长度为0,1,2的路径。因为点分治的性质,它每次只统计当前子树内经过重心的长度为3的倍数的路径,所以我们在每次统计之后 阅读全文
posted @ 2018-09-14 22:19 CaptainLi 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 啥是点分治? 点分治一般来说用于解决大规模的树上路径问题。比如说最经典的一道题,给定一棵树,计算一共有多少点对满足之间距离<=k。 这种题一般数据范围在10^4~10^5,直接暴力求是n^2的肯定会超时。 那怎么办?我们考虑分治。 先说一下点分治的基本思想,就是对于每一棵树,先找到这棵树的重心。 啥 阅读全文
posted @ 2018-09-14 00:26 CaptainLi 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 传送门 这是一道神奇的树形DP,对它还是不需要建树,而且完全可以一边读入,一边DP出结果…… 首先我们看题目描述很显然是一棵二叉树,而且还是完全二叉树。(没啥卵用) 令dp[i][j]表示在第i个节点选取花费j时间所能获取的最大画数。 之后因为题目的输入是递归给出的……所以我们直接去建图难度很大,不 阅读全文
posted @ 2018-09-12 20:34 CaptainLi 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 传送门 又是熟悉的遍历题……好了又不会了。 这是一道很神奇的题,虽然可以称为树形DP但是它不需要建树! 首先,因为中序遍历每个连续的一段都对应一棵子树,所以我们完全可以使用区间DP的方法去把小区间合并成大区间来计算。 使用dp[i][j]表示区间i,j之内(也就是一棵子树)的最高加分。特殊的,dp[ 阅读全文
posted @ 2018-09-12 20:24 CaptainLi 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 传送门 仍然是一道标准的树形DP。 我们其实不必纠结到底剩余的钱数是多少,那并不重要,我们只关心其是否大于0。而且我们其实要求的是能连接的最大用户数。 用dp[i][j]表示在第i个节点连接了j个客户的最大利润。那么得到: dp[i][j] = max(dp[i][j],dp[i][j-k] + d 阅读全文
posted @ 2018-09-12 20:16 CaptainLi 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题是典型的树形DP。 因为我们发现有一条性质,那就是对于一根枝条,你选择了它的话你也必须同时选择从这根枝条到根的所有枝条。 我们使用dp[i][j]表示对于第i个节点,保留j根枝条所能获得的最大苹果树,那么就有: dp[i][j] = max(dp[i][j],dp[i][j-k-1] 阅读全文
posted @ 2018-09-12 20:09 CaptainLi 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 传送门 这题什么玩意……提示说这是个平衡树题,不过一来我没看出这是平衡树,二来我早忘了怎么写平衡树了。 我想到的是用线段树解决。前两个摧毁和重建的操作都只需要进行单点修改,而第三个操作,我的想法就是找到这个点左边最靠右的一间被摧毁的屋子和右边最靠左的一间被摧毁的屋子。 我们把所有点的权值一开始设成1 阅读全文
posted @ 2018-09-12 19:53 CaptainLi 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 传送门 这题咋做呀……?一开始我的想法贼啦复杂也没法实现(实际就是不会) 后来看了dalao的想法之后明白了,如果在给定前后序的情况下中序遍历出现不同的情况,那么必然是树中有一些只有一个儿子的节点(因为这样树就是不定型的) 每出现这样一个节点,结果就会×2。 那我们还要去建树递归求只有一个儿子的节点 阅读全文
posted @ 2018-09-12 19:31 CaptainLi 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 传送门 一道很简单的树形DP。 树形DP是啥?看名字就知道是在树上进行DP。树形DP的不同在于,对于一个节点,他的状态必然是由其子节点而不是其他节点转移过来的。 树形DP有啥技巧我也说不清……直接来几道题看看吧。 首先看这道题。这题就是要求在树中选取一棵子树,使得其权值和最大。 DP过程还是很显然的 阅读全文
posted @ 2018-09-12 19:23 CaptainLi 阅读(638) 评论(0) 推荐(0) 编辑
上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 35 下一页