Processing math: 100%

随笔分类 -  LCA

摘要:传送门 这一题真是什么做法都有啊... 首先看完题目就知道要离线,然后树上差分十分显然 所以现在的问题就是求每个节点子树内出现最多的颜色 这个显然可以每个节点维护一个动态开点权值线段树然后通过儿子节点线段树合并得到当前节点的答案 这个时间复杂度经过分析是 O(nlog2n),因为每个插入 阅读全文
posted @ 2019-09-19 17:26 LLTYYC 阅读(169) 评论(0) 推荐(0) 编辑
摘要:传送门 看到这种奇怪的要求,考虑一下推结论 考虑把路径上的点权拿出来排序,变成一个数列,那么显然我们只要考虑相邻连续的 3 个数 发现如果我们贪心构造一个尽量无法构成三角形的数列,那么最小的数列就是斐波那契数列 众所周知斐波那契数列增长很快,第 50 项显然远大于题目给出的点权范围,所以如果 阅读全文
posted @ 2019-09-18 08:21 LLTYYC 阅读(151) 评论(0) 推荐(0) 编辑
摘要:传送门 发现蚂蚁不多,所以考虑两两枚举然后判断 那么首先要求出两条链的公共部分,然后根据之间在公共链的时间段和是同向还是反向进行判断 思路简单但是细节很多...... 首先求链的公共部分,设两种蚂蚁为 a,b,路径分别为 As,AtBs,Bt 那么经过一波手玩分类讨论,公共部分的两端点 阅读全文
posted @ 2019-09-05 11:36 LLTYYC 阅读(227) 评论(0) 推荐(0) 编辑
摘要:传送门 考虑先随便找一个点作为根,然后再慢慢移动根,这样一步步走到最优的点 设 sum[x] 表示节点 x 的子树的军队数,len(x,y) 表示 x,y 之间边的长度 那么对于根节点 x 的一个儿子 v,考虑把儿子搞为根时,代价的改变量 v 的子树内的军队消耗减少,共减 阅读全文
posted @ 2019-01-30 11:13 LLTYYC 阅读(153) 评论(0) 推荐(0) 编辑
摘要:传送门 虚树DP经典题 首先有一个显然的O(nm)的树形DP 以 1 号节点为根 设 f[x] 表示把节点 x 子树内的资源点都与 x 的父节点断开的最小代价 那么转移显然: 枚举 x 的所有儿子节点 v,设 x 到父节点的边权为 w $f [ x ] = mi 阅读全文
posted @ 2018-12-30 16:37 LLTYYC 阅读(161) 评论(0) 推荐(0) 编辑
摘要:传送门 十分显然完成工作的时间和航耗时最长的运输计划有关 所以题目意思就是要求最大值最小 所以可以想到二分 把所有大于mid时间的航线打上标记,显然删边只能在所有这些航线的公共路径上 要如何快速打标记是个问题 二分已经有一个log,所以只能承受O(n)的判断 如果能知道一条边的经过次数,那么就知道这 阅读全文
posted @ 2018-10-22 08:40 LLTYYC 阅读(201) 评论(0) 推荐(0) 编辑
摘要:传送门 此题树剖可过 然而可以树上差分为什么要树剖.. 对于一条路径(A,B),只要把 val [ A ] ++ , val [ B ] ++ , val [ LCA(A,B) ] -- , val [ fa[LCA(A,B)] ] -- 那么求每个点的经过次数就求一下子树 val 的和就好了 但是 阅读全文
posted @ 2018-10-15 12:54 LLTYYC 阅读(224) 评论(0) 推荐(0) 编辑
摘要:传送门 考虑一个状态(a,b,c)的转移 b可以往左右跳 或者a和c中离b比较近的往中间跳 如果把当前状态看成一个节点 那么可以吧b往左右跳的情况看成当前节点的左右儿子状态 而且左右儿子状态要到父节点的状态就只能往中间跳,只有唯一的方法 那么所有可以互相转移的状态一起构成了一颗二叉树 树根就是不能往 阅读全文
posted @ 2018-09-29 10:01 LLTYYC 阅读(319) 评论(0) 推荐(0) 编辑
摘要:传送门 考虑只有两个人的情况 集合点可以是树上两点间路径上的任一点 总长度可以用LCA求出 ans=dep[ x ] - dep[ LCA(x,y) ] + dep[ y ] - dep[ LCA(x,y) ] 三个人也差不多 Ans=dep[ x ] - dep[ LCA(x,y) ] + dep 阅读全文
posted @ 2018-09-28 09:56 LLTYYC 阅读(251) 评论(0) 推荐(0) 编辑
摘要:传送门 次小生成树 那肯定是最小生成树上改一条边(改两条肯定不如只改其中一条小) 那就枚举所有不在最小生成树上的边 考虑如果把此边加入,另一边删除后的情况 考虑要删哪条边后才能保持树的形态,并且总长最小 加入一条边后树就会出现一个环 那么删掉的边要在加入的边连接的两点间的路径上 并且删去的边要尽量大 阅读全文
posted @ 2018-09-24 14:51 LLTYYC 阅读(205) 评论(0) 推荐(0) 编辑
摘要:传送门 算法:最大生成树 & LCA 题目要求两点之间最小边权 的最大值.. 就是两点之间有多条路径,每条路径有一个 最小边权 要找到最大的 最小边权 考虑kruskal算法的过程 如果我们每次把能使图两个块联通的最大的边加入图中 那么最终出来的图就称为最大生成树 显然 在最大生成树中,两点之间的路 阅读全文
posted @ 2018-08-25 15:35 LLTYYC 阅读(226) 评论(1) 推荐(1) 编辑

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