近年来的趋势都是把动态规划出成计算几何吗? 这题首先我们有个n^2的动规 设v为u的祖先f[u]=min{f[v]+(d[u]-d[v])*p[u]+q[u]}且d[u]-d[v]<=l[u] ~~~~~我要变形了~~~~~~ f[u]=min{-d[v]*p[u]+f[v]}+d[u]*p[u]+q[u] 哎,前面这个好像什么东西... ...
好吧实际上和树剖没什么关系。。只是用来求lca的。。。 对于点x,如果不在环中,定义它的父亲为dfs树中的父亲;否则定义它的父亲为它所在环在dfs树中最高的点,同时距离为它到那个最高点的最短路。然后可以用树剖求出(x,y)的lca。然后分类讨论一下,因为如果x->lca和y->lca的路径上最后一... ...
题目链接 题意: 给你一棵树,要支持下列操作:1.链赋值2.子树min3.换根,要nlogn 题解: 这题看了几个题解完全没有说换根是怎么维护的,都在说看代码,一气之下就自己想出了这个题。 链赋值和子树min很容易想到树剖,但是树剖不支持换根。我太弱不会top tree,只能想办法解决换根问题。 我们考虑换根对答案的影响,我们画个图应该不... ...
DSM(Data Structure Master) once learned about tree when he was preparing for NOIP(National Olympiad in Informatics in Provinces) in Senior High School. So when in Data St... ...
题意: 对于一颗树,两种操作(1)修改某边权(2)查询两点间最大边权 解:树链剖分 代码(200ms): #include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<vec... ...
题目传送门 题目大意: 给出一个在树上移动的序列,求出每个点被经过的次数。 思考过程: 维护两个点之间的链的信息很明显我们需要树剖,但是树剖无法维护链上每个节点的信息,所以我们需要借助差分数组。 具体做法: 1.树剖 2.对于序列中相邻的两个点,像普通树剖求答案那样往上跳到LCA,过程中将两个节点的差分数组起点+1,终点-1... ...
树链剖分 看了http://blog.sina.com.cn/s/blog_6974c8b20100zc61.html学习了树链剖分 适用于在树上的路径操作。 关键在于重链的构造,把它表示到了数据结构上的连续区间,降低了复杂度。 主要操作步骤实际上有三个部分 1: 构造重链 2: 如何维护数据 3: 分解为轻重链的查询与修改 #... ...
这是一道大树链剖分的题。 1.我们可以发现:a为:所有点权之和的平方,bi为:消去链上的点后,所形成的某棵子树的点权之和,那么,s = a-所有bi的平方的和,s即为我们要查询的值 2.所以我用树状数组维护了两个域,一个是当前节点的子节点的bi的平方的和(不包括在当前链上的子节点),另一个维护的的是以i节点的权值,当然查询out[i]... ...
题目:Yaoge’s maximum profit 题意:一棵树,每个结点有个初始的权值,点的权值代表在该点的鸡肉的价格。 对于一个询问X, Y, V。 找到X到Y的路径,可以选择在路径上一个点I买鸡肉,然后在点J卖掉,要求J必须在I之后访问。那么你就可以赚取差价,问最大差价是多少。然后这条路径上的点的权值全部增加V。 这么裸的树链剖分,... ...