題目描述
在一條環形公路旁均勻地分布著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
51 8 6 2 5
樣例輸出 copy
15解法:對於此題,先進行環形處理,然後在做最大值處理,用單調佇列維護。
#include#includeusing
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 ...