POJ 3250 Bad Hair Day(单调栈)

单调栈其实很简单,,不懂的阔以先移步了解一下


#include <iostream>
#include <stack>
using namespace std;

//本题要求每头牛看到多少头牛的和,,
//可以转化为每头牛被多少头牛看到的和。
//然后就可以用单调递减栈解决问题了

stack<int>s;

int main(){
	long long n, ans = 0, num;
	cin >> n;
	for (int i = 0; i < n; i++){
		cin >> num;
		while (s.size()>0 && s.top() <= num)s.pop();
		ans += s.size();
		//cout << ans << endl;
		s.push(num);
	}
	cout << ans << endl;

	return 0;
}


你可能感兴趣的:(POJ 3250 Bad Hair Day(单调栈))