单调栈小黄题求调
  • 板块灌水区
  • 楼主ljlthu
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/12/5 16:52
  • 上次更新2024/12/5 20:40:05
查看原帖
单调栈小黄题求调
1297464
ljlthu楼主2024/12/5 16:52

题目传送门

//2024.12.5 ljl luogu P2866 [USACO06NOV] Bad Hair Day S
//单调栈
#include <bits/stdc++.h>
using namespace std;
const int N = 8e4 + 5;
int n, h[N], ans;
stack<int>s;

int main() {
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> h[i];
	for (int i = 1; i <= n; i++) {
		while (!s.empty()) {
			s.pop();
		}//先清空栈
		s.push(i);
		for (int j = i + 1; j <= n; j++) {
			if (s.size() == 1 && h[j] >= h[s.top()]) {
				ans += j - s.top() - 1;
				break;
			}//往前不会再有看得见的奶牛了,用ans记录奶牛数
			while (h[j] >= h[s.top()] && s.size() > 1) {

				s.pop();
			}
			s.push(j);
		}
	}
	cout << ans;
	return 0;
}
2024/12/5 16:52
加载中...