随笔分类 -  点.树.边.图上的分治

摘要:题目链接 "loj 2013. 「SCOI2016」幸运数字" 题解 和树上路径有管...点分治吧 把询问挂到点上 求出重心后,求出重心到每个点路径上的数的线性基 对于重心为lca的合并寻味,否则标记下传 对于每个询问,只需要暴力合并两个线性基即可 每个点只会被加到logn个线性基里,所以总复杂度为 阅读全文
posted @ 2018-09-02 19:12 zzzzx 阅读(278) 评论(0) 推荐(0)
摘要:题目链接 "luogu P4178 Tree" 题解 点分治 代码 c++ // luogu judger enable o2 include include inline int read() { int x = 0,f = 1 ; char c = getchar(); while(c '9') 阅读全文
posted @ 2018-08-20 06:07 zzzzx 阅读(140) 评论(0) 推荐(0)
摘要:题目链接 "bzoj4016: [FJOI2014]最短路径树问题" 题解 对于建树 dij建出最短路图 在最短路图上dfs,先走字典序最小的可达点 得到最短路树 然后就是经典的点分治了 维护每个深度的最远距离合并就好了 代码 c++ include include include include 阅读全文
posted @ 2018-08-07 21:53 zzzzx 阅读(205) 评论(0) 推荐(0)
摘要:题目链接 "bzoj4456: [Zjoi2016]旅行者" 题解 网格图,对于图分治,每次从中间切垂直于长的那一边, 对于切边上的点做最短路,合并在图两边的答案。 有点卡常 代码 c++ include include include include include include inline 阅读全文
posted @ 2018-08-07 20:58 zzzzx 阅读(194) 评论(2) 推荐(0)
摘要:题目链接 "luogu P4115 Qtree4" 题解 动态点分治,和上一题一样.同样三个堆.就是带权,用边权替换深度就好 为什么要单独写这个题解呢,因为我卡常卡了一天....据说树剖比rmq快? 在第24次AC 同样也有更有做法 代码 c++ include include include in 阅读全文
posted @ 2018-07-01 09:07 zzzzx 阅读(251) 评论(0) 推荐(0)
摘要:题目链接 "bzoj1095: [ZJOI2007]Hide 捉迷藏" 题解 建出点分树,每次修改一个结点只影响它到树根的一条链暴力修改 实现的时候用三层带修改堆来维护 B.维护每个重心存所有子树到其点分树父亲节点de距离 C.维护子树中的点到根的距离 ,我们可以用子节点的B来更新它 A.全局一个堆 阅读全文
posted @ 2018-07-01 09:02 zzzzx 阅读(218) 评论(0) 推荐(0)
摘要:题目链接 "bzoj2599: [IOI2011]Race" 题解 点分治,用t[k]表示子树中距离root为k 的最小边路径 转移时先与前边子树和合并更新答案,然后更新距离父节点最优值,这样就保证不在同一子树内了 每次分层的时候记得清除答案 代码 c++ include include inclu 阅读全文
posted @ 2018-07-01 08:39 zzzzx 阅读(167) 评论(0) 推荐(0)
摘要:题目链接 "bzoj2152: 聪聪可可" 题解 其实本来想找点分的题做,然后就用dp水了 当然,也有好好用点分水一遍的QWQ dp,维护子树中点到子树跟的距离,%3分类的个数,转移很好写吧 :上, 点分:维护当前树中点到根的距离分类,统计答案好些吧,因为会在当前树的某棵子树下出现非最短路径,容斥一 阅读全文
posted @ 2018-06-26 19:29 zzzzx 阅读(127) 评论(0) 推荐(0)