Nikita and stack CodeForces - 756C (栈,线段树)

大意: 给定m个栈操作push(x)或pop(), 栈空时pop()无作用, 每个操作有执行的时间$t$, 对于每个$0 \le i \le m$, 输出[1,i]的栈操作按时间顺序执行后栈顶元素.

push看做1, pop看做-1, 维护一个下标为时间的前缀和$sum_i=max(sum_{i-1}+a_i,0)$.

这样的话, 若$sum$为0则栈空, 否则假设最后有$k$个pop()操作, 则栈顶为倒数$2k+1$个操作.

每给一个操作相当于是修改$a$的值, 用线段树维护就好

猜你喜欢

转载自www.cnblogs.com/uid001/p/10439921.html
今日推荐