树上启发式合并
不哭的超人
愿你孤独的努力终有回报,愿你前行的路上有人相伴。
展开
-
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 · 152 阅读 · 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 · 386 阅读 · 0 评论