洛谷 P2120 ZJOI2007 倉庫建設

2021-09-24 21:55:53 字數 2935 閱讀 5585

題幹重點:

第i個工廠目前已有成品ai件,在第i個工廠位置建立倉庫的費用是bi。

對於沒有建立倉庫的工廠,其產品應被運往其他的倉庫進行儲藏……只能運往編號更大的工廠的倉庫,一件產品運送1個單位距離的費用是1

告訴你工廠的位置,在每乙個工廠建立倉庫的費用,以及它們原有產品的個數,產品只能往編號高的地方運,求把所有產品運入倉庫的最小費用

飛快地寫出轉移方程:

f

if_i

fi​表示在i

ii處建倉庫且前i

ii個倉庫被安頓好的最小代價

好吧為了安頓第i

ii個倉庫裡的東西你也不得不在這裡建倉庫

f i=

fj+∑

k=j+

1iak

(dis

i−di

sk)+

ci

f_i=f_j+\sum\limits^_a_k(dis_i-dis_k)+c_i

fi​=fj

​+k=

j+1∑

i​ak

​(di

si​−

disk

​)+c

i​最後直接取f

nf_n

fn​就好

實際上是o(n

3)

o(n^3)

o(n3

)好的一看就不能過我們來優化

首先從∑

\sum

∑入手我們用sum

sumsu

m陣列儲存a

ia_i

ai​字首和,用s

ss陣列儲存aid

is

ia_idis_i

ai​dis

i​的字首和

\sum

∑的部分就變成了:

d is

i(su

mi−s

umj)

−si+

sj

dis_i(sum_i-sum_j)-s_i+s_j

disi​(

sumi

​−su

mj​)

−si​

+sj​

即f i=

fj+d

isi(

sumi

−sum

j)−s

i+sj

+c

if_i=f_j+dis_i(sum_i-sum_j)-s_i+s_j+c_i

fi​=fj

​+di

si​(

sumi

​−su

mj​)

−si​

+sj​

+ci​

接下來就是斜率優化了

把原方程寫成y=k

x+

by=kx+b

y=kx+b

的形式:

f j+

sj=d

isis

umj+

fi+s

i−di

sisu

mi+c

if_j+s_j=dis_isum_j+f_i+s_i-dis_isum_i+c_i

fj​+sj

​=di

si​s

umj​

+fi​

+si​

−dis

i​su

mi​+

ci​其中

y =f

j+sj

y=f_j+s_j

y=fj​+

sj​k=d

is

ik=dis_i

k=disi​x=

sumj

x=sum_j

x=sumj​b=

fi+s

i−di

sisu

mi+c

ib=f_i+s_i-dis_isum_i+c_i

b=fi​+

si​−

disi

​sum

i​+c

i​由此,一切都明了了

貼**時間到!

#include

#define ll long long

using

namespace std;

struct deque

//方便除錯

/*/ deque():head(1),tail(0),list(new int[1110000]){}//避免爆棧

//*/

intsize()

intfront()

void

push_front

(int x)

void

pop_front()

intfront_2nd()

intback()

void

push_back

(int x)

void

pop_back()

intback_2nd()

};int dis[

1110000

],a[

1110000

],c[

1110000];

ll f[

1110000

],sum[

1110000

],s[

1110000];

ll x

(int x)

ll y

(int x)

intk

(int x)

double

slope

(int a,

int b)

intmain()

printf

("%lld"

,f[n]);

return0;

}

洛谷 2120 ZJOI2007 倉庫建設

題目描述 l公司有n個工廠,由高到底分布在一座山上。工廠1在山頂,工廠n在山腳。由於這座山處於高原內陸地區 乾燥少雨 l公司一般把產品直接堆放在露天,以節省費用。突然有一天,l公司的總裁l先生接到氣象部門的 被告知三天之後將有一場暴雨,於是l先生決定緊急在某些工廠建立一些倉庫以免產品被淋壞。由於地形...

洛谷 P1169 ZJOI2007 棋盤製作

西洋棋是世界上最古老的博弈遊戲之一,和中國的圍棋 象棋以及日本的將棋同享盛名。據說西洋棋起源於易經的思想,棋盤是乙個8 times 88 8大小的黑白相間的方陣,對應八八六十四卦,黑白對應陰陽。而我們的主人公小q,正是西洋棋的狂熱愛好者。作為乙個頂尖高手,他已不滿足於普通的棋盤與規則,於是他跟他的好...

洛谷 P1169 ZJOI2007 棋盤製作

給定乙個n m的01矩陣,尋找最大的,相鄰值不相同的子矩陣與子方陣。n,m leq 2,000 樸素的做法是列舉兩個點來確定矩陣,再暴力判斷能不能滿足條件。複雜度 o n 4 考慮優化 判斷能不能滿足條件時,存在很多重複判斷,可以預處理。但是,怎樣進行預處理呢?這就需要我們改變列舉方式,簡化預處理的...