CF91B Queue(單調佇列 二分)

2022-05-28 15:45:14 字數 541 閱讀 9472

這題比較經典,我們想要求比他小的最遠的點

因此我們發現,如果乙個點比他前面的點大還比他近,說明這個點永遠不會作為答案

因此我們就可以維護乙個單調佇列,之後二分找到第乙個大於等於他的位置在哪,之後這個位置的前乙個就是答案

#includeusing

namespace

std;

typedef

long

long

ll;typedef pair

pll;

const

int n=2e5+10

;const

int inf=0x3f3f3f3f

;int

a[n];

intans[n];

vector

num,v;

intmain()

for(i=n;i>=1;i--)

else

}for(i=1;i<=n;i++)

cout

cout

<

}

view code

CF91B Queue 權值線段樹

有n個人在佇列中等待。假如某個人前面有乙個人年齡比他小,那他就會不高興 定義他的 不高興度 為他前面留他最遠的年齡比他小的人與他的距離,求每個人的不高興度。n 10 5 權值線段樹 include using namespace std const int inf 1e 9 7 const int ...

CodeForce 91B 單調佇列 二分

題意 個數,求出a i a i a i 後面最後乙個小於a i a i a i 的數與a i a i a i 間的距離,如果沒有小於a i a i a i 的數則輸出 題解 從後往前遍歷陣列,單調佇列維護乙個遞減的序列,每次判斷將要插入的數與隊尾的數的大小關係。如果當前插入的數不能保持佇列的單調性則...

CF939F Cutlet 單調佇列優化DP

題目大意 要煎一塊有兩個面的肉,只能在一段k不相交的時間段 l r 內翻轉,求 2 n 秒後,保證兩個面煎的時間一樣長時,需要最少的翻轉次數,n 100000 k 100 神仙單調佇列優化 dp noi2005 瑰麗華爾茲 也有類似的壓時間段的套路,但這道題可比那道題難多了。樸素 o n 2 的 d...