HDU 3061 Battle 最大權閉合

2021-07-05 02:58:43 字數 1272 閱讀 3869

題目大意:由於小白同學近期習武十分刻苦,很快被晉公升為天策軍的統帥。而他上任的第一天,就面對了一場極其困難的戰鬥:

據偵查兵回報,前方共有n座城池,考慮到地勢原因,最終得到乙個結論:攻占某些城池之前必須攻占另外一些城池。

事實上,可以把地圖看做是一張拓撲圖,而攻占某個城池,就意味著必須先攻占它的所有前驅結點。

小白還做了乙份調查,得到了攻占每個城池會對他的兵力產生多少消耗(當然也可能會得到增長,因為每攻占乙個城池,便可以整頓軍隊,擴充兵力,天策軍的兵力十分龐大,如果不考慮收益,他們可以攻取所有的城池)。

現在請你幫小白統帥做乙份戰鬥計畫,挑選攻打哪些城市,使得天策軍在戰鬥過後軍容最為壯大。

解題思路:最大權閉合水題,tle有可能是你的空間開不夠

#include 

#include

#include

#include

#include

using

namespace

std;

const

int maxnode = 510;

const

int maxedge = 200010;

typedef

int type;

const type inf = 0x3f3f3f3f;

struct edge

edge(int u, int v, type cap, type flow, int next) : u(u), v(v), cap(cap), flow(flow), next(next){}

};struct dinic

void addedge(int u, int v, type cap)

bool bfs() }}

return vis[t];

}type dfs(int u, type a)

}return flow;

}type maxflow(int s, int t)

return flow;

}void mincut()

}}dinic;

int n, m, sum;

void solve()

else dinic.addedge(i, sink, -c);

}int u, v;

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

printf("%d\n", sum - dinic.maxflow(source, sink));

}int main()

hdu 3061 最大流最小割

題目 中文題 最小割,增加源和匯,把源與權為正的點連上界為該點權值的邊,權為負的點與匯連上上界為該點權值相反數的邊,然後如果攻占a必須先佔b,則連上權值無窮的邊a b,所有正值之和減去最大流,即答案。include include include include includeusing names...

hdu 4322 最大費用最大流)

思路 建圖真的是太巧妙了!直接copy大牛的了 由於只要得到糖就肯定有1個快樂度,在這一點上醣的效果是等效的。所以只要考慮有特殊效果的糖的分配就可以了。當快樂的程度超過b i 時,多出來的部分就浪費了,為了使浪費盡可能少,我們用費用流加以控制,當獲得最大費用最大流的時候,這是的費用的利用率就是最高的...

hdu 查詢最大元素

problem description 對於輸入的每個字串,查詢其中的最大字母,在該字母後面插入字串 max input 輸入資料報括多個測試例項,每個例項由一行長度不超過100的字串組成,字串僅由大小寫字母構成。output 對於每個測試例項輸出一行字串,輸出的結果是插入字串 max 後的結果,如...