我們直接搞乙個遞減單調棧;
對於每乙個當前的x;
可以發現棧裡的所有比x小的值都代表了乙個區間的次大值,最大值就是x;
那麼我們不斷彈出這些數並且計算答案就好了,最後把x壓入棧;
當然嘍,這個僅僅是次大值在最大值前面的情況;
#include
#define ll long long
using namespace std;
const int n=1e5+5;
int a[n],q[n];
int r,n,m,ans;
void work()
}int main()
}
51nod 1272 最大距離 單調棧
1272 最大距離 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 給出乙個長度為n的整數陣列a,對於每乙個陣列元素,如果他後面存在大於等於該元素的數,則這兩個數可以組成一對。每個元素和自己也可以組成一對。例如 可以組成11對,如下 數字為下標 ...
51Nod 1349 最大值(單調棧)
1349 最大值 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 有一天,小a給了小b一些數字,讓小b幫忙找到其中最大的數,由於小b是乙個程式猿,當然寫了乙個 很快的解決了這個問題。這時,的小c又出現了,他問小b,假如我只需要知道這些數字中的某個區間的最大值,你還...
51nod 1349 最大值 單調棧
有一天,小a給了小b一些數字,讓小b幫忙找到其中最大的數,由於小b是乙個程式猿,當然寫了乙個 很快的解決了這個問題。這時,的小c又出現了,他問小b,假如我只需要知道這些數字中的某個區間的最大值,你還能做嘛?小b經過七七四十九天的思考,終於完美的解決了這道題目,這次,他想也讓小c嚐嚐苦頭,於是他問小c...