環路運輸 (單調佇列 環形處理)

2022-02-24 16:01:26 字數 780 閱讀 9939

題目描述

在一條環形公路旁均勻地分布著n座倉庫,編號為1~n,編號為 i 的倉庫與編號為 j 的倉庫之間的距離定義為 dist(i,j)=min⁡(|i-j|,n-|i-j|),也就是逆時針或順時針從 i 到 j 中較近的一種。每座倉庫都存有貨物,其中編號為 i 的倉庫庫存量為 ai。在 i 和 j 兩座倉庫之間運送貨物需要的代價為 ai+aj+dist(i,j)。求在哪兩座倉庫之間運送貨物需要的代價最大。1≤n≤10^6,1<=ai<=10^7。

輸入第一行乙個整數n,第二行n個整數a1~an。

輸出乙個整數,表示最大代價。

樣例輸入 copy

5

1 8 6 2 5

樣例輸出 copy

15

解法:對於此題,先進行環形處理,然後在做最大值處理,用單調佇列維護。

#include#include

using

namespace

std;

const

int n=2e6+10

;int

a[n],n,q[n],ans;

intmain()

printf(

"%d\n

",ans);

return0;

}

對於單調佇列,有一部分變數時需要列舉的,主要維護的就是那些不變的變數,也就是首尾標誌維護的變數。我們只要更新好這些變數,列舉好此時變數,則就一定能維護好的最大值和最小值。

環路運輸 環形結構 單調佇列(滑動視窗)

在一條環形公路旁均勻地分布著n座倉庫,編號為1 n,編號為 i 的倉庫與編號為 j 的倉庫之間的距離定義為 dist i,j min i j n i j 也就是逆時針或順時針從 i 到 j 中較近的一種。每座倉庫都存有貨物,其中編號為 i 的倉庫庫存量為 ai。在 i 和 j 兩座倉庫之間運送貨物需...

CH5501 環路運輸 環形 單調佇列

ch description 在一條環形公路旁均勻地分布著n座倉庫,編號為1 n,編號為 i 的倉庫與編號為 j 的倉庫之間的距離定義為 dist i,j min i j n i j 也就是逆時針或順時針從 i 到 j 中較近的一種.每座倉庫都存有貨物,其中編號為 i 的倉庫庫存量為 ai.在 i ...

單調佇列優化DP CH 5501 環路運輸

給定乙個長度為 n n 的環形序列 a role presentation a a,定義di st i j min i j n i j d is t i,j m in i j n i j 求出最大的 ai aj dist i,j ai aj d ist i,j 破環為鏈 判斷長度是否超過n 2 n ...