随笔分类 - 图论_树上操作
摘要:A1 先贪心的(可能你们觉得很显然),我们直接从前往后扫,并且让每个区间尽量长。 如何判断?差的 gcd 不为 1 + map 判重复元素。 A3 DP + 堆优化 $f[i]=\min(\sum_{j=i k}^i f[j] + max(b[j],s[i] s[j]))$ 发现每个点在又收税转为路
阅读全文
摘要:思路:树哈希 提交:1次 题解: 怕不是用的 "oi wiki" 上的公式: $$f_u=size_u\times\sum f_{son_{u,i}}\times Base^{i 1}$$ cpp include define R register int using namespace std;
阅读全文
摘要:思路:可持久化线段树+巧妙地树上差分 提交:1次 题解: 我们从根开始,类似主席树板子,一个一个加点,使得从根到叶子节点时一个类似前缀和的主席树,即 $u$ 点维护的是 $1$ 到 $u$ 的路径。 这样我们就可以在 $u+v lca(u,v) fa(lca(u,v))$ 这样一颗线段树上二分了。
阅读全文
摘要:又咕咕了几天$QwQ$ 思路:二分+树上差分 提交:$\geq5$次 错因:$lca$写错+卡了很久常数(哪位大佬帮我康康,有更好的写法请指出$QwQ$) 题解: 我们先将原问题转化为$log_2n$个判定问题; 如何$ck(x)$:把所有$ x$的路径在树上标记(边差分),然后找到被所有$ x$路
阅读全文
摘要:我的天。。普及组这么$hard$。。。 然后好像没有人用我的垃圾做法,,,好像是$O(n)$,但十分的慢,并且极其暴力$qwq$ 具体来说,就是直接$dfs$求出树高,然后想像出把原来的树补成满二叉树的形态 $like\space this:$ 震不震惊$qwq$ 然后对子树哈希,同时保存正向的哈希
阅读全文
摘要:我猜会有智障说直接链剖+线段树…(希望没有) From RYC's 课件 然鹅我并不反对树剖。。。我是智障。。。QAQ 好吧还是树上差分:设 a[i]=u.a[i+1]=v ++w[u],++w[v],--w[lca(u,v)],--w[fa of lca(u,v)] 最后dfs一边统计答案 201
阅读全文
摘要:借用学长的活:60种颜色是突破口(我咋不知道QAQ) 好像这几道都是线段树+dfs序??于是你可以把60种颜色压进一个long long 里,然后向上合并的时候与一下(太妙了~) 所以记得开long long (又调了一个半小时。。。打代码只花了20分钟???) 2019.04.19
阅读全文
摘要:反向操作,先把所有的标记都打上(记得统计标记的数目),然后依次撤销,合并到自己的上一个点pre,即fa[u]=getf(pre[u]) 2019.04.16
阅读全文
摘要:辣鸡错误:把dfs和ldfs搞混。。。QAQ 题意:给定一个无向图,然后查询q次,求每次查询就在图上增加一条边,求剩余割边的个数。 先把边双缩点,然后预处理出LCA的倍增数组; 然后加边时,从u往上跳,把所有u到LCA(u,v)路径上割边去掉,即 --ans;v同理; 而向上跳的时候可以用并查集,把
阅读全文
摘要:本来抄了篇题解,后来觉得题解都太不友好(我太菜了),一气之下自己打。。。一打打到第二天QAQ 首先什么边也不加时,总路程就是2*(n-1) 考虑k=1的时候,答案显然是2*(n-1)-直径+1=2*n-直径-1,如果能加一条边的话,因为希望减少的尽可能多,那么只需要把直径的首尾接起来,就不需要来回走
阅读全文
摘要:要开始学图论了。。。。。老是被在对面高二机房的高一学长图论强者ddy虐。。。。。 树的直径 update(2019.04.02):!!!dfs无法解决负权树(我是调了一晚上的渣渣) 给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和。树中最远的两个节点之间的距离被称为
阅读全文

浙公网安备 33010602011771号