CF5E Bindian Signalizing 单调栈
题目链接
题目大意是,一个环上有n个点,当且仅当这两个点之间没有比这两个数中任意一个数大的数时,这两个点可以相互看见。求可以相互看见的点的对数。
思路:
遇到环的问题我们一般都是把环拆成链,但是这里如果只是简单的把数组复制一遍的话,我们发现很难去重。环有一个特性就是可以循环移位,我们把最大的数放在最左边,这样的话从逆时针找,找到的最大的数的位置不可能大于1.
利用这个性质我们就可以写出这题。其实还是写了一上午,需要考虑很多细节。
我们用单调栈维护一个递减栈,重复的数我们不再重复的放入,而是用一个数组标记它出
原创
2020-10-04 14:09:39 ·
161 阅读 ·
0 评论