题海拾贝:P1091 [NOIP 2004 提高组] 合唱队形
【代码】题海拾贝:P1091 [NOIP 2004 提高组] 合唱队形。
·
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!
我的博客:<但凡.
我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C++修炼之路》
欢迎点赞,关注!
1、题目
2、题解
#include<iostream>
#include<stack>
using namespace std;
const int N = 1e6 + 10;
int v[N];
int h[N];
int ret[N];
int n;
int x;
int main()
{
cin >> n;
for (int i = 1;i <= n;i++) cin >> h[i] >> v[i];
stack<int> s;
//注意这道题是两边
//找大
for (int i = 1;i <= n;i++)
{
while (s.size() && h[i] >= h[s.top()]) s.pop();
if (s.size())
{
ret[s.top()] += v[i];
}
s.push(i);
}
//清空栈
while (s.size()) s.pop();
for (int i = n;i >= 1;i--)
{
while (s.size() && h[i] >= h[s.top()]) s.pop();
if (s.size())
{
ret[s.top()] += v[i];
}
s.push(i);
}
for (int i = 1;i <= n;i++) x = max(x, ret[i]);
cout << x << endl;
return 0;
}
更多推荐
所有评论(0)