BZOJ 2163 複雜的大門

2022-09-10 14:00:35 字數 1298 閱讀 8095

題目傳送門

分析:這個好像和那道清理滑雪跑道好像啊。。。

如果每個點都要訪問恰好fi次

然後邊不能超過w次

哦。。。

上下界網路流

每個點拆成兩個,原點向複製點連上(f,f)的邊,複製點向可到達的原點連(0,w)的邊

由於公交可以到達每個點,相當於發配流量,每個點都可以停下,相當於直接流向終點

所以s向每個原點連(0,inf)的邊,每個複製點向t連(0,inf)的邊

然後直接跑就好了。。。

#include#include

#include

#include

#include

#define maxn 20005

#define maxm 2000005

#define inf 0x3f3f3f3f

using

namespace

std;

inline

intgetint()

intn,m,s,t;

intfir[maxn],nxt[maxm],to[maxm],cap[maxm],cnt;

inth[maxn],tp[maxn];

intf[maxn];

long

long

ans;

inline

void newnode(int u,int v,int

w)inline

void insert(int u,int v,int

w)inline

bool

bfs()

return ~h[t];

}inline

int dfs(int u,int

flow)

}if(!used)h[u]=-1

;

return

used;

}inline

intdinic()

intmain()

for(int i=1;i<=m;i++)

int ss=t+1,tt=ss+1

;

for(int i=1;i<=t;i++)

if(f[i]>0

)insert(ss,i,f[i]);

else insert(i,tt,-f[i]);

insert(t,s,inf);

s=ss,t=tt;

dinic();

printf(

"%d\n

",cap[cnt]);

}

view code

BZOJ2163 複雜的大門

bzoj2163 複雜的大門 你去找某bm玩,到了門口才發現要開啟他家的大門不是一件容易的事 他家的大門外有n個站台,用1到n的正整數編號。你需要對每個站台訪問一定次數以後大門才能開啟。站台之間有m個單向的傳送門,通過傳送門到達另乙個站台不需要花費任何代價。而如果不通過傳送門,你就需要乘坐公共汽車,...

BZOJ2163 複雜的大門

點這裡看題目。bzoj gg 了,所以鏈結在 dark 上面。題面 你去找某 bm 玩,到了門口才發現要開啟他家的大門不是一件容易的事 他家的大門外有 n 個站台,用 1 到 n 的正整數編號。你需要對每個站台訪問一定次數以後大門才能開啟。站台之間有 m 個單向的傳送門,通過傳送門到達另乙個站台不需...

BZOJ1171 大sz的遊戲

f i min f j 1,線段j與線段i有交,且l i l j l。線段j與線段i有交等價於y j x i x j y i 因為l i 遞增,所以可以維護乙個單調遞增的j,表示 j,i 1 範圍內都可以更新f i 用k d樹動態維護即可,時間複雜度 o n sqrt include include...