题解 P1165 【日志分析】

引领天下

2017-06-14 17:17:47

Solution

个人上来直接写了个朴素的栈模拟,然后很开心的 T 了。 后来思考了一下,得到了优化后的思路。 做法: 指令边读边做,然后分几种情况: 1. 操作 0(集装箱进库操作,相当于进栈),如果输入的数小于之前的最大值,就仍然存储原来的最大值因为后进先出,当前的如果小,永远不可能被 2 询问到,所以存了也没用,不然入栈,栈顶 +1 2. 操作 1(集装箱出库操作,相当于出栈),直接栈顶 -1 3. 操作 2(集装箱询问操作,由于此时的栈顶是最大值,可以直接输出) 事实上,以上做法本质上就是维护了一个单调栈。 代码就不贴了,相信大家应该可以实现。