【最近公共祖先】[COCI]STOGOVI
2015-09-07 14:12
190 查看
首先可以定义每一个节点代表一种操作,那么我们需要知道的状态有{前一个状态的id,当前的栈顶元素}那么我们可以发现因为只是指向前面的元素,那么我们不需要考虑有环的问题(不存在),那么我们可以因为数据范围巨大,那么我们需要用LCA进行优化,同时我们发现如果弹出了,那么一定会变得更小(每个栈的序列是升序的)那么我们只要找到需要判断的两个重复的LCA节点到a和到b的中间所有节点的最小值(这个也可以用倍增弄看NOIP2013 day1t3)就可以知道我们最小的重复出现的栈(每个栈只出现了1次)然后可以做出这道题目了,代码等会儿写。
相关文章推荐
- Algorithm --> 爬楼梯求最大分数
- [FFmpeg] 去除 logo
- Algorithms—39.Combination Sum
- google.com 还会换IP
- IE和Google浏览器事件传递参数不同
- Algorithm --> 棋盘中求出A到B的最小步数
- Algorithm --> 求N以内的真分数个数
- django给admin增加功能
- 悟空:用Go语言编写的全文搜索引擎
- 类别 category 以及类扩展
- 认识理解zygote
- 【哥德巴赫猜想】POJ Goldbach's Conjecture 2262
- django中给ajax提交加上csrf
- 【哥德巴赫猜想】LightOJ Goldbach`s Conjecture 1259
- Uva 11292 The Dragon of Loowater
- Intent中的四个重要属性——Action、Data、Category、Extras
- leetcode: (121) Best Time to Buy and Sell Stock
- 分类(category)
- django for windows
- hdu 1056 HangOver