題意:
給了一些任務,然後給了一些完成某些任務的限制,然後又給了限制之間的拓撲關係,最後問你最大收益。
思路:很直白,就是流的乙個應用,最大權閉包,沒涉及到什麼想法的地方,建圖也不坑,直接說建圖吧,
s - 所有任務 流量是 任務價值
所有限制 - t 流量是 限制代價
a -> b 流量 inf a限制的拓撲關係在b的後面
最後答案是 所有任務的價值 - maxflow
#include#include#include#define n_node 100#define n_edge 8000
#define inf 1000000000
using namespacestd;
typedef struct
star;
typedef struct
dep;star e[n_edge];dep xin,tou;
intlist[n_node] ,listt[n_node] ,tot;
intdeep[n_node];
voidadd(
inta,
intb,
intc)
boolbfs_deep(
ints,
intt,
intn)
}for(
inti=0;i<=n;i++)listt[i] =list[i];
returndeep[t] != -1;
}intminn(
intx,
inty)
intdfs_flow(
ints,
intt,
intflow)
if(!nowflow)deep[s] =0;
returnnowflow;
}intdinic(
ints,
intt,
intn)
returnans;
}int
main
()for
(i=1;i<=m;i++)
for(i=1;i<=n;i++)
}for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
printf("case #%d: ",cas++);printf("%d\n",sum_z-dinic(s,t,t));
}return0;
}
hdu 3879 最大權閉包)
選擇了一條邊就會選擇兩個點,邊的花費為正,點的花費為負,把邊看成點,這個點向兩個端點連一條邊,表示選擇這條邊就會選擇這兩個點 然後題目就相當於最大權閉合圖的模型了 最大權閉包模型中vs與正收益的點連邊,負收益的點與vt連邊,容量取絕對值,然後點與點之間連容量為inf的邊 題意 有n個點,m個選擇,建...
HDU 5045 費用流求最大權
題意 有n個人和m到題目,每個人做對的概率以矩陣形式給出,問如何分配才可以使做對的概率最大,有乙個限制條件是做到目前為止每兩個人的做題數量差距不能超過1,也就是前n道題目,必須一人做乙個 思路 網上都是dp多一點,用網路流也可以,不過麻煩很多,可是本弱是一點dp都不會的選手啊,只能用網路流了,對於那...
HDU 3061 Battle 最大權閉合
題目大意 由於小白同學近期習武十分刻苦,很快被晉公升為天策軍的統帥。而他上任的第一天,就面對了一場極其困難的戰鬥 據偵查兵回報,前方共有n座城池,考慮到地勢原因,最終得到乙個結論 攻占某些城池之前必須攻占另外一些城池。事實上,可以把地圖看做是一張拓撲圖,而攻占某個城池,就意味著必須先攻占它的所有前驅...