随笔分类 - 图论--树--lca
摘要:$n \leq 100000$的树,每个点有个糖,$m \leq 100000$种糖,每种糖好吃度$V_i$,吃$j$颗$i$糖会得到愉悦值$V_i*W_j$,$q \leq 100000$个操作:修改一个点上的糖;查询某条链上吃糖的愉悦值。 首先看看能不能用啥数据结构维护。麻烦。好上莫队。 树上的
阅读全文
摘要:$n \leq 500000$的树给$m \leq 500000$个路径,$q \leq 500000$个询问每次问一个区间的路径交。 路径交口诀:(前方高能) 判有交,此链有彼祖; 取其交,最深两两祖。 说成人话就是:判两条路径有没有交,只要一条链的lca在另一条链上就一定有交;取两条路径的交,把
阅读全文
摘要:n<=100000,m<=500000的图有点权边权,q<=500000个询问每次问从x出发经过不超过y的边权能到的点权第K大,加强版强制在线。 Emmmmmm有一个漂亮的方法来转化,就是对原图做MST,做的时候要连接两个点时不要直接连,新开一个点然后让这两个点连上这个点。 这样就把边权挂到树上了,
阅读全文
摘要:n<=100000的点权树,有m<=100000个询问,每次问两个点间的第k小点权,保证有解,强制在线。 主席上树啦!类似于之前的序列不带修改询问的前缀表示法,现在只要把前缀当成某点到根的信息即可。然后比如要问x点和y点,z为lca(x,y),w为z的爸爸,那么x,y,z,w四棵线段树一起跑即可。
阅读全文
摘要:n<=1e5的有根点权树,m<=1e5个操作:换根,修改点权,查询子树最小值。 维护子树信息--dfs序,至于换根只需要分类讨论一下现在根和查询点的关系。 如果查询的点是根节点,就输出整颗树的最小值。 如果查询的点5在1到7的路径上,那以7为根的时候查询5,就是整颗树排除粉红色部分--5的儿子中,是
阅读全文
摘要:n<=1e5个点的树有边权,m个询问,每次问max dis(i,j) a<=i<=b,c<=j<=d。 结论:一个区间的最远点对,要么是其左半区间的最远点对,要么是其右半区间的最远点对,要么是左右半区间最远点对的四个点的互相组合之一。如下图: 两个集合最远点对分别是A-B,A并B的最远点对是红A-蓝
阅读全文
摘要:求三个人从a,b,c这三个位置跳到x,y,z最少多少步。跳:任意选一颗棋子,对一颗中轴棋子跳动。跳动后两颗棋子距离不变。一次只允许跳过1颗棋子。 从它跳的性质出发,向内跳只有一种操作,而向外跳有两种。这就是说,每个状态可以找到一个唯一前趋,有两个后继。这是一棵二叉树!求两个状态的最短路就是求他们到l
阅读全文
摘要:n<=300000个点的树,每个点有个人于第Ti秒观测,有m<=300000个人于时间0开始从Sj跑到Tj,速度1个点每秒,输出每个点上的人观察到的跑步的人的数量。 前25分:直接模拟每条路径,先s跑到lca再跑到t,边跑边记时间,如果经过某个点时时间刚好一样就该点答案++。 Si等于1的20分:观
阅读全文
摘要:n<=100000个点的树,每个点属于一个K<=n/2个集合中的一个,每个集合至少两个点,求每个集合中任选两点距离的最大值。 方法一:什么都看不出来,点分,每次只统计经过一个点的每个集合的不同子树的路径来更新。详见http://www.cnblogs.com/Enceladus/p/6099250.
阅读全文