POJ 3250 Bad Hair Day (单调栈)
生活随笔
收集整理的這篇文章主要介紹了
POJ 3250 Bad Hair Day (单调栈)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
POJ 3250 Bad Hair Day (單調棧)
手動博客搬家:本文發表于20170806 22:53:35, 原地址https://blog.csdn.net/suncongbo/article/details/76795400
URL: http://poj.org/problem?id=3250
題目大意:農場里有n頭奶牛(1<=n<=8e4)排成一列,每頭牛能看到他后面嚴格比他矮的奶牛,直至遇到比他高或一樣高的奶牛為止。
求所有奶牛能看見的其他奶牛的總數。
思路分析:很多類似的題,看上去都很像逆序數,然而和逆序數有著細微的差別。這導致了這種題采用了完全不同的算法。
如果直接考慮每頭牛能看到多少其他奶牛,顯然較難。
我們可以“正難則反”地考慮每頭牛能被看到幾次。
于是可以找到一種思路:維護一個單調遞減的棧s.
輸入第i個數后,棧中的元素個數減去1就等于第i頭牛能被看到的次數。
減去1是因為要去掉自己,自己不能被自己看見。
最后將這些值相加即可。
部分易錯點:
代碼呈現:(Time: 688MS; Memory: 2588K; Code: 477B)
總結
以上是生活随笔為你收集整理的POJ 3250 Bad Hair Day (单调栈)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 1703 Find them,
- 下一篇: BZOJ 2456 mode