poj3250单调栈

有n只羊,(姑且算是羊吧,也有可能是牛啊猫啊什么之类的),每只羊都有一个身高,前面的羊要看到后面的羊的条件是,后面的羊高度要小于前面的羊,就问各位羊加起来看到的牛多少只.......

#include<iostream>
#include<stack>
#include<stdio.h>
using namespace std;
int main()
{
	int n;
	while(scanf("%d",&n)>0)
	{
		stack<__int64>Q;
		__int64 num,sum=0;
		scanf("%I64d",&num);
		Q.push(num);
		for(int i=1;i<n;i++)
		{
			scanf("%I64d",&num);
			while(!Q.empty()&&Q.top()<=num)
			Q.pop();
			sum+=Q.size();
			Q.push(num);
		}
		printf("%I64d
",sum);
	}
	return 0;
}
原文地址:https://www.cnblogs.com/ziyi--caolu/p/3151586.html