この質問は、最も基本的な単調なスタックです。
スタックは、単調なスタック要素の中でそれを維持するために、いわゆる単調なメンテナンスです。単調なスタックで、私たちは、のO(N)の複雑さのいくつかの特定の問題を解決することができます
この質問はあなたがすべての牛が牛の合計数を見ることができます参照してくださいする権利を持って依頼することを意味しています。
サンプルトピックは非常に明確に説明されています。直接コードに。
#include <iostreamの> する#include <cstdioを> する#include <CStringの> する#include <積層> 使用して 名前空間STD。 int型トップ、N。 スタック < int型 > S; INT ()は、メイン { 長い 長い。NUM 長い 長い ANS = 0 ; scanf関数(" %のD "、&N) 用(int型 I = 0 ; iがN <++ i)が { scanf関数(" %のLLD "、&NUM); しばらく(!s.empty()&& s.top()<= NUM) s.pop(); ANS + = s.size()。 s.push(NUM)。 } のprintf(" %LLDする\ n " 、ANS)。 リターン 0 ; }