JZOJ4848 永恆的契約(單調棧)

2021-10-03 04:04:08 字數 755 閱讀 2130

有 n

nn 塊石頭,排成乙個環,第 i

ii 塊石頭為高度 a

ia_i

ai​。兩塊不同的石頭 i

ii 和 j

jj 能夠互相看到,當且僅當它們在環上的兩條路徑中有至少一條路徑上的石頭高度都不大於 min⁡⁡

\min⁡ \

min⁡

。求有多少對石頭能互相看到。

1 ≤n

≤106

,1≤a

i≤10

91 \leq n \leq 10^6, 1\leq a_i \leq10^9

1≤n≤10

6,1≤

ai​≤

109。

先考慮在鏈上的問題。

可以用單調棧求出乙個數左邊第乙個比它大的數 l

il_i

li​ 和右邊第乙個比它大的數 r

ir_i

ri​。這是兩個不同的數互相看到的情況。然後求出 sum

isum_i

sumi

​ 為 [i,

ri−1

][i,r_i - 1]

[i,ri​

−1] 有多少個數與 a

ia_i

ai​ 相等。這是兩個相等的數互相看到的情況。

然後考慮將環的問題轉換成鏈的問題。在環上找乙個點把環斷開,會讓跨過這個點的數對消失,也會讓一些包含這個數的數對消失。所以選擇最大的數不會有跨過它的情況,那麼暴力把少求的數對加回來即可。

無權提交**。

JZOJ4848 永恆的契約

description 宅邸迅速的燃燒著,必須帶貝蒂走出 庫!憑著感覺,又一次直接找到 庫的門。你,是那個人嘛?400年了,當初聖域建立結界時沒有進入聖域,被傷了心的人工精靈貝蒂,與強欲魔女簽訂契約,守護宅邸的 庫,直至 那個人 的到來,那個人會解開貝蒂的心結。我不是那個什麼人,但我會成為你唯一的人...

JZOJ4848 永恆的契約

給定乙個長度為 n 的環,每個位置有乙個高度ai 當在環上的兩條路徑中有至少一條路徑上除了兩個端點,路徑上的高度都不大於mi n ai aj 時,i,j 可以互相看到。求有多少對可以互相看到的點對。t組資料。data constraint t 5,n 1000000 因為是環,所以可以先copy一遍...

永恆的契約

宅邸迅速的燃燒著,必須帶貝蒂走出 庫!憑著感覺,又一次直接找到 庫的門。你,是那個人嘛?400年了,當初聖域建立結界時沒有進入聖域,被傷了心的人工精靈貝蒂,與強欲魔女簽訂契約,守護宅邸的 庫,直至 那個人 的到來,那個人會解開貝蒂的心結。我不是那個什麼人,但我會成為你唯一的人。我會給你幸福 精靈與人...