bzoj1345: [Baltic2007]序列問題Sequence(單調棧)
題目傳送門
。
解法:
只有我寫的是單調棧嗎?
維護一個單調遞減的棧。
那麼每次進來一個元素x
如果大於棧頂的話。說明棧頂要被消除了。
棧頂與棧頂下一個可以認為是挨在一起的。
x與棧頂可以認為是挨在一起的。
所以比較x與棧頂下一個的大小加到答案裡即可。
跑完一遍之後可能棧還有元素沒消除完。
從棧頂往下慢慢消就行。
程式碼實現:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
typedef long long ll;
int sta[1100000],top,a[1100000];
int main() {
int n;scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
int top=0;ll ans=0;
for(int i=1;i<=n;i++) {
int x=a[i];
while(x>=sta[top]&&top>0) {
if(top==1)ans+=ll(a[i]);
else ans+=min(sta[top-1],x);top--;
}sta[++top]=x;
}
for(int i=1;i<top;i++) ans+=ll(sta[i]);
printf("%lld\n",ans);
return 0;
}
相關文章
- Leetcode:單調棧_可見山峰問題LeetCode
- [題解]P4597 序列 sequence
- PostgreSQL 序列(Sequence)SQL
- python sequence序列Python
- 單調棧/單調佇列佇列
- 裁剪序列Cut the Sequence
- 單調棧 和 單調佇列佇列
- 單調棧和單調佇列佇列
- 單調棧模板
- HNOI2016序列+資料加強版(字首和+單調棧)
- 「crudapi」零程式碼實現訂單序列號SequenceAPI
- 淺談單調棧
- 單調棧學習小思考
- 演算法之單調棧演算法
- 線段樹維護單調棧——區間查詢版本 & 維護遞減序列
- [JSOI2008] 最大數 (單調棧)JS
- HISTOGRA - 最大矩形面積(單調棧)
- 特殊資料結構:單調棧資料結構
- LeetCode 周賽上分之旅 #47 前字尾分解結合單調棧的貢獻問題LeetCode
- 【筆記】線段維護單調棧筆記
- 單調棧進階-接雨水-最大矩形
- LeetCode Monotone Stack Summary 單調棧小結LeetCodeMono
- leetcode.最小棧問題LeetCode
- ABC372D ABC379F 題解 單調棧二分
- 【LeetCode刷題(中等程度)】946. 驗證棧序列LeetCode
- I - Max answer 計蒜客 - 38228 單調棧
- Largest Submatrix of All 1’s(思維+單調棧)
- Complete the Sequence (生成完整序列數)第一次做英文c++的題C++
- kuangbin 專題二十三:二分 尺取 單調棧佇列 String佇列
- 多重揹包問題的單調佇列優化佇列優化
- 函式呼叫棧的問題函式
- 不同的子序列問題I
- 求最大子序列的問題
- 第十章 單調棧 Part2
- Leetcode321. 拼接最大數——單調棧的使用LeetCode
- codeforce 686div3 F Array Partition單調棧
- Codeforces #123D: 字尾陣列+單調棧3D陣列
- bzoj3190: [JLOI2013]賽車(單調棧)