单调栈

来源:互联网 发布:ubuntu sleep命令 编辑:程序博客网 时间:2024/04/27 12:45

题目传送门:点击打开链接

心塞。因为一个等号找了一个上午的bug。刷题少的确是泪啊、

 /*题目大意:给你n头奶牛高度的数据,从左边向右边,每一头奶牛只能看到比他高度矮的奶牛。问这n头奶牛能总共看到的奶牛头数是多少算法分析:可以构造一个单调递增栈,这样就可以求出其他奶牛看到该头奶牛的数量,求和即可 */#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <stack>#include <cstdlib>using namespace std;typedef long long int LL ;int main() {int n;LL res, h;stack <LL> p;while (cin >> n) {while (!p.empty())p.pop();//清空栈 res = 0;while (n --) {cin >> h;while (!p.empty() && h >= p.top())//构造单调递增栈 p.pop();res += p.size();//cout << res<< endl;p.push(h);}cout << res << endl;}return 0;}


0 0
原创粉丝点击