SDOI省隊集訓題 棋盤(最小費用流)

2021-08-01 23:42:45 字數 2461 閱讀 3660

題解:

是乙個最小費用最大流,建立源點匯點,x向可以互相攻擊到的為乙個集體,所有的集體作為一縱,連源點;同樣,y向可以互相攻擊到的為乙個集體,所有的集體為一縱,與匯點連邊;不難得出,x[i]y[j]對應唯一乙個點,這樣的x與y連邊流量1,費用0。每次找流,就在這個集團x與s再連一條1,++h[v];t與集團y也連一條

下面圖示

這個**是非計畫連邊,按理說乙個集團有多少個點才連多少邊,但是非計畫連邊由於流量限制應該也是對的,還是寫了乙個計畫連邊的。

#include 

#include

#include

#include

#include

#define inf 1e9+7

#define n 25000+5

using

namespace

std;

bool vis[n];

int tot=-1,x[55][55],y[55][55],d[2505],s,t,hv[2505],ans[n];

char a[55][55];

int nxt[n*2+5],point[n*2+5],remind[n*2+5],v[n*2+5],last[n*2+5],dis[n*2+5],co[n*2+5];

void addline(int x,int y,int cap,int cost)

bool spfa()}}

return dis[t]int main()

int tt=cnt;

for (j=1;j<=n;j++)

for (i=1;i<=n;i++)

int maxx=0,l;

for (i=1;i<=n;i++)

for (j=1;j<=n;j++)

if (a[i][j]=='.')

addline(x[i][j],y[i][j],1,0);

for (i=1;i<=tt;i++)addline(0,i,1,0);

for (i=tt+1;i<=cnt;i++)addline(i,cnt+1,1,0);

ans[0]=0; int num=0;

s=0,t=cnt+1;int k,la;

while (spfa())//如果還有流

addline(0,la,1,++hv[la]);

addline(v[last[t]^1],t,1,++hv[v[last[t]^1]]);

}scanf("%d",&q);

for (i=1;i<=q;i++)

}

以下是計畫連邊,速度慢於非計畫。

#include 

#include

#include

#include

#include

#define inf 1e9+7

#define n 25000+5

using

namespace

std;

bool vis[n];

int tot=-1,x[55][55],y[55][55],d[2505],s,t,hv[2505],ans[n];

char a[55][55];

int nxt[n*2+5],point[n*2+5],remind[n*2+5],v[n*2+5],last[n*2+5],dis[n*2+5],co[n*2+5];

void addline(int x,int y,int cap,int cost)

bool spfa()}}

return dis[t]int main()

int tt=cnt;

for (j=1;j<=n;j++)

for (i=1;i<=n;i++)

int maxx=0,l;s=0,t=cnt+1;

for (i=1;i<=n;i++)

for (j=1;j<=n;j++)

if (a[i][j]=='.')

addline(x[i][j],y[i][j],1,0);

for (j=1;j<=n;j++)

for (i=1;i<=n;i++)

ans[0]=0; int num=0;

int k,la;

while (spfa())//如果還有流

}scanf("%d",&q);

for (i=1;i<=q;i++)

}

國家集訓隊 航班安排 最小費用最大流

對請求拆點建圖 對於乙個請求,如果 0 時刻可以從 0 機場到這裡,那麼 s 向它連邊,流量 infty 費用為 w 結束時間飛回 0 小於時間限制,則向著 t 連邊,費用為 w 兩兩枚舉所有請求,如果來得及就同理連邊 最後別忘了限制一下總流量 跑最小費用最大流即可 include using na...

hdu 1533 最小費用最大流模板題

這一題雖然說是模板題,但作為學習了最小費用最大流過程之後的第一題,模型的建立還是一臉懵比,之後通過見識相關的變形再來磨練建模的能力吧 如下是網上題解中關於本題中網路流的建模 1.所有人到所有的房子均建容量為1,費用為人到房子的曼哈頓距離的流 2.建立超級源點s,s到所有人均建容量為1,費用為0的流 ...

hdu3667 最小費用流 拆邊題

第一道拆邊題 用bellman ford以967ms險過.先說一下大體的題意 輸入n m k 分別指城市的個數 m條邊 現在需要把k個單位的物品從城市1運往城市n 接下來的m行 每一行輸入四個數 u i,v i,a i,ci 代表從城市u到城市v有一條單向路 容量為c 如果在這條路上運送x個單位的物...