倍增
D_Bamboo_
我不懒,只是不知道填什么
展开
-
P3252 [JLOI2012]树——树上倍增
题意给定一个值 s 和一棵树。在树的每个节点有一个权值,第 i 个点的权值为a[i],问有多少条路径的节点权值总和为 s。路径中节点的深度必须是升序的。假设节点 1 是根节点,根的深度是 0,它的儿子节点的深度为 1。路径不必一定从根节点开始。思路路径必须是从低深度到高深度,也就是路径端点一定是祖先儿子关系,考虑倍增思路,预处理出f[i][j]:i节点的第2^ j个父亲是谁,dp[i][j]:i节点到第2^ j个父亲之间路径节点和(不包括i,包括2^j)。dfs枚举每一个节点,f[i][j] = f[原创 2020-07-02 17:37:00 · 268 阅读 · 0 评论 -
城市网络——树上倍增
题目链接题意有一个树状的城市网络(即 n 个城市由 n-1 条道路连接的连通图),首都为 1 号城市,每个城市售卖价值为 a_i 的珠宝。现在安排有 q 次行程,每次行程为从 u 号城市前往 v 号城市(走最短路径),保证 v 在 u 前往首都的最短路径上。 在每次行程开始时,你手上有价值为 c 的珠宝,每经过一个城市时(包括 u 和 v ),假如那个城市中售卖的珠宝比你现在手上的所有珠宝的最大值要优秀(价值更高,即严格大于),那么你就会选择购入。现在你想要对每一次行程,求出会进行多少次购买事件。思原创 2020-07-01 20:12:27 · 269 阅读 · 0 评论