【最近公共祖先】[COCI]STOGOVI

首先可以定义每一个节点代表一种操作,那么我们需要知道的状态有{前一个状态的id,当前的栈顶元素}那么我们可以发现因为只是指向前面的元素,那么我们不需要考虑有环的问题(不存在),那么我们可以因为数据范围巨大,那么我们需要用LCA进行优化,同时我们发现如果弹出了,那么一定会变得更小(每个栈的序列是升序的)那么我们只要找到需要判断的两个重复的LCA节点到a和到b的中间所有节点的最小值(这个也可以用倍增弄看NOIP2013 day1t3)就可以知道我们最小的重复出现的栈(每个栈只出现了1次)然后可以做出这道题目了,代码等会儿写。

你可能感兴趣的:(优化,算法,最近公共祖先,coci)