BZOJ4261 建設遊樂場

2021-09-07 09:04:29 字數 882 閱讀 3394

將圖黑白染色,每個點拆成兩個點,分別表示水平和豎直方向,再增加乙個點以控制流量,那麼每個格仔都需要找兩個方向去連線。

$s$到每個黑點的控制點連邊,流量$2$,費用$0$;

控制點向兩個方向的點各連兩條邊,第一條流量$1$,費用$0$,第二條流量$1$,費用$w$;

然後兩個方向的點分別向對應白點連邊,流量$1$,費用$0$。

這樣一來如果這個格仔是直軌道,那麼會產生$w$的收益,如果是彎軌道,會產生$2w$的收益。

對於白點也類似處理,求出最大費用最大流,如果滿流則有解,最大收益為費用減去總收益。

#includeconst int inf=~0u>>2,n=15010,m=300000,e=155;

int n,m,i,j,tmp,flow,ans,cs,ct,a[e][e],b[e][e],id[e][e][3];

int u[m],v[m],c[m],co[m],nxt[m],t=1,s,t,l,r,q[m],g[n],f[n],d[n];bool in[n];

inline void add(int x,int y,int z,int zo)

inline bool spfa()

}in[x]=0;

} return d[t]>-inf;

}int main()

t++;

for(i=1;i<=n;i++)for(j=1;j<=m;j++)if(!a[i][j])else

} if(cs!=ct)return puts("-1"),0;

while(spfa())

if(flow!=cs)return puts("-1"),0;

return printf("%d",ans),0;

}

bzoj 4261 建設遊樂場 費用流

現在有一大塊土地,可以看成n m的方格。在這塊土地上,有些格仔內是崎嶇的山地,無法建造任何東西 其他格仔都是平原。現在打算在這塊土地上建設乙個遊樂園。遊樂園由若干條閉合的過山車軌道組成,每個平原格仔都要鋪一截軌道,為下列 6 種型別中的一種 每張圖表示一塊平原格仔,圖內網格線為輔助線,無實際意義。其...

遊樂場 題解

據新聞報道,orz教主在太平洋 建了乙個大遊樂園,其中有許多小島,每個小島上有且僅有乙個遊樂設施,有的小島與小島之間有海底隧道連線,而有的沒有,乙個遊樂設施對乙個人只開放一次,花的錢與得到的快樂值成正比。一開始,你可以選擇被空投到任意乙個小島。當你想離開遊樂園時,你可以打 叫飛機來接,但不能再次被空...

hdu 2015新生賽 遊樂場

problem description 小時候,因為家裡經濟困難,小明從未去過遊樂場,所以直到現在,他還心存遺憾。最近,杭州剛建了一座遊樂場,為了彌補兒時的遺憾,小明帶了一筆錢迫不及待地要去體驗一番。由於是第一次來到這種地方,小明也不知哪些專案比較好玩,因此他想體驗盡可能多的專案。來之前,小明還向朋...