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