本文主要是介绍P2866 [USACO06NOV] Bad Hair Day S,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
农夫约翰有 𝑁 头奶牛正在过乱头发节。
每一头牛都站在同一排面朝右,它们被从左到右依次编号为 1,2,⋯ ,𝑁。编号为 𝑖 的牛身高为 ℎ𝑖。第 𝑁 头牛在最前面,而第 1 头牛在最后面。
对于第 𝑖 头牛前面的第 𝑗 头牛,如果 ℎ𝑖>ℎ𝑖+1,ℎ𝑖>ℎ𝑖+2,⋯ ,ℎ𝑖>ℎ𝑗,那么认为第 𝑖i 头牛可以看到第 𝑖+1 到第 𝑗 头牛。
定义 𝐶𝑖 为第 𝑖 头牛所能看到的牛的数量。请帮助农夫约翰求出 𝐶1+𝐶2+⋯+𝐶𝑁。
输入格式
输入共 𝑁+1行。
第一行为一个整数 𝑁,代表牛的个数。
接下来 𝑁 行,每行一个整数 𝑎𝑖,分别代表第 1,2,⋯ ,𝑁头牛的身高。
输出格式
输出共一行一个整数,代表 𝐶1+𝐶2+⋯+𝐶𝑁。
代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<stack>
using namespace std;
int n,t;
long long ans;
stack<int> a;int main()
{cin >> n;for(int i = 1;i <= n;i ++){cin >> t;while(!a.empty() && a.top() <= t){a.pop();}ans += a.size();a.push(t);}cout<<ans;return 0;
}
这篇关于P2866 [USACO06NOV] Bad Hair Day S的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!