【bzoj 1345】 [Baltic2007]序列问题Sequence
2017-03-25 13:45
393 查看
[Baltic2007]序列问题Sequence
Time Limit: 5 Sec Memory Limit: 162 MB
Submit: 857 Solved: 447
[Submit][Status][Discuss]
Description
对于一个给定的序列a1, …, an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列。这一操作的代价是max(ai,ai+1)。进行n-1次该操作后,可以得到一个长度为1的序列。我们的任务是计算代价最小的reduce操作步骤,将给定的序列变成长度为1的序列。
Input
第一行为一个整数n( 1 <= n <= 1,000,000 ),表示给定序列的长度。接下来的n行,每行一个整数ai(0 <=ai<= 1, 000, 000, 000),为序列中的元素。
Output
只有一行,为一个整数,即将序列变成一个元素的最小代价。
Sample Input
3
1
2
3
Sample Output
5
HINT
30%的测试数据 n<=500;
50%的测试数据 n <= 20,000。
Source
单调栈,新加入的元素,贪心的前后合并
Time Limit: 5 Sec Memory Limit: 162 MB
Submit: 857 Solved: 447
[Submit][Status][Discuss]
Description
对于一个给定的序列a1, …, an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列。这一操作的代价是max(ai,ai+1)。进行n-1次该操作后,可以得到一个长度为1的序列。我们的任务是计算代价最小的reduce操作步骤,将给定的序列变成长度为1的序列。
Input
第一行为一个整数n( 1 <= n <= 1,000,000 ),表示给定序列的长度。接下来的n行,每行一个整数ai(0 <=ai<= 1, 000, 000, 000),为序列中的元素。
Output
只有一行,为一个整数,即将序列变成一个元素的最小代价。
Sample Input
3
1
2
3
Sample Output
5
HINT
30%的测试数据 n<=500;
50%的测试数据 n <= 20,000。
Source
单调栈,新加入的元素,贪心的前后合并
#include<iostream> #include<cstdio> #define inf 0x7fffffff using namespace std; int n,top,s[1000001]; long long ans; int main() { scanf("%d",&n); s[0]=inf; for(int i=1;i<=n;i++) { int x;scanf("%d",&x); while(top&&x>=s[top]) { if(x>=s[top-1]) {ans+=s[top-1];top--;} else {ans+=x;top--;} } s[++top]=x; } while(top>1) ans+=s[--top]; printf("%lld",ans); return 0; }
相关文章推荐
- 【bzoj1345】[Baltic2007]序列问题Sequence 单调栈
- [单调栈] BZOJ 1345 [Baltic2007]序列问题Sequence
- bzoj1345: [Baltic2007]序列问题Sequence
- [BZOJ1345][Baltic2007]序列问题Sequence(单调栈)
- BZOJ1345 [Baltic2007]序列问题Sequence
- 【Baltic2007】【BZOJ1345】序列问题Sequence
- bzoj 1345: [Baltic2007]序列问题Sequence 排序+贪心
- BZOJ1345: [Baltic2007]序列问题Sequence
- bzoj 1345: [Baltic2007]序列问题Sequence(单调栈)
- 【bzoj1345】[Baltic2007]序列问题Sequence
- BZOJ1345: [Baltic2007]序列问题Sequence
- 【BZOJ1345】[Baltic2007]序列问题Sequence 贪心+单调栈
- bzoj1345 [Baltic2007]序列问题Sequence 单调栈
- [BZOJ1345][Baltic2007]序列问题Sequence(单调栈)
- BZOJ_1345_[Baltic2007]序列问题Sequence_单调栈
- 【BZOJ 1345】 [Baltic2007]序列问题Sequence
- [BZOJ 1345][Baltic2007]序列问题Sequence:单调栈
- [BZOJ1345][Baltic2007]序列问题Sequence(单调栈)
- 【BZOJ】【P1345】【Baltic2007】【序列问题Sequence】【ST表】
- BZOJ 1345: [Baltic2007]序列问题Sequence