何为单调栈?顾名思义,单调栈即满足单调性的栈结构。与单调队列相比,其只在一端进行进出
#include<bits/stdc++.h>
using namespace std;
const int N = 3e6 + 10;
int n;
int a[N];
stack<int> st;
int ans[N];
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for (int i = 1; i <= n; i++) {
while (st.size() && a[i] > a[st.top()]) {
ans[st.top()] = i;
st.pop();
}
st.push(i);
}
for (int i = 1; i <= n; i++) {
cout << ans[i] << ' ';
}
}
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;
int n;
int a[N];
signed main() {
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
for(int i=1; i<=n; i++) {
cin>>a[i];
}
stack<int> st;
int mx=0;
for(int i=1; i<=n; i++) {
while(st.size()&&a[i]>=st.top()) {
st.pop();
}
cout<<st.size()<<' ';
mx=max(mx,(int)(st.size()));
st.push(a[i]);
}
cout<<'\n'<<mx<<'\n';
}
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10;
int cnt, sum;
int n, m;
deque<int> de;
int q[N];
priority_queue<int, vector<int>, greater<int>> t;
signed main() {
cin >> n;
int i;
for (i = 1; i <= n; i++) {
int x;
cin >> x;
t.push(x);
}
for (i = 1; i < n; i++) {
int a, b;
a = t.top();
t.pop();
b = t.top();
t.pop();
sum += a + b;
t.push(a + b);
}
cout << sum << endl;
}