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

2021-08-25 05:45:57 字數 680 閱讀 7300

給定乙個長度為

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/2

(因為這樣)

然後題目就可以轉換乘最大子序和的問題了

用單調佇列優化一下即可

#include

#include

#include

using

namespace

std;int a[2000001],n,ans;

deque

q;int read()

signed main()

printf("%d",ans);

}

CH 5501 環路運輸 DP 單調佇列

n nn個在乙個環上的倉庫,兩兩之間運貨的代價是a i a j m in i j n i j a i a j min i j n i j a i a j min i j n i j 求最大代價。環上的dp固然不好做,可以先把環拆成鏈,再拷貝乙份。成為一條長度為2n2n 2n的鏈。for int i ...

CH5501 環路運輸 環形 單調佇列

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

CH 5501 環路運輸 DP 單調佇列

nn 個在乙個環上的倉庫,兩兩之間運貨的代價是a i a j m in i j n i j a i a j min i j n i j 求最大代價。環上的dp固然不好做,可以先把環拆成鏈,再拷貝乙份。成為一條長度為2n2 n的鏈。for int i 1 i n i 那麼接下來的dp就再鏈上dp就可以...