
树上启发式合并
不哭的超人
愿你孤独的努力终有回报,愿你前行的路上有人相伴。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
E. Merging Towers(并查集+合并式启发)
E. Merging Towers 解题思路:对于每一次的答案,都是在塔里面连续出现的区间-1,比如[[5,1],[2],[7,4,3],[6]],需要移动五次,这五次就是[5],[1],[2],[7],[4,3],[6],有6个减一。启发式合并就是小的向大的合并。比如合并u和v这两个塔,需要用小塔向大塔上移动,对于小塔上面的每一个盘子,-1或者+1,寻找它们在上一次最后被移动到哪个塔上,也就是找祖先节点,接着判断一下这个祖先节点是否等于u。如果相等,则说明这可以合并成一个连续的序列,所以需要在原来答案的基原创 2020-11-11 13:37:04 · 189 阅读 · 0 评论 -
Tree Intersection(树上启发式合并)
Tree Intersection 解题思路:树上启发式合并。对于每一个节点,先处理它的轻儿子,再出来它的重儿子。对于重儿子,是需要将它的结果记录下来。然后对于他们的父亲节点,这个重儿子就不需要处理了。 #include<bits/stdc++.h> using namespace std; const int N = 1e5+10; struct node{ int v; int w; int next; }e[N<<4]; int head[N<&原创 2020-11-07 12:51:19 · 418 阅读 · 0 评论