P2762 太空飛行計畫問題

2021-08-14 23:59:56 字數 2093 閱讀 7911

本來是想做 noi2009的植物大戰殭屍來著,建了半天模型都沒又成功。

於是看了看題解,發現這個問題叫做最大權閉合圖

我tm好像沒學過啊.

於是先看了看概念,做了下入門的題目,然後一做就是一晚上(慘~

我真不是頹了來著。

這個題引入了最大權閉合圖的概念。乙個閉合圖的定義為圖中所有點的出邊的終點都在這個圖中。乙個圖的最大權閉合子圖為其中所有閉合子圖中權值和最大的。

本題的實質就是求最大權閉合圖,試按照實驗-儀器的關係建圖,並將它們的收益(如果要花錢,則為負值)標註在點上。這個圖應當形如以下示例。

要求本圖上的最大權閉合圖,就要先將原圖中的正值點連向源點s,容量為點權,負值點連向匯點t,容量為點權的絕對值,例如下圖示例。

需要用到的定理:

1.最大流==最小割

2.最小割分割成的兩個圖中,源點s所在的那個圖是最大權閉合圖。

在本題裡,我們需要從源點向每個實驗建一條容量為價值的邊

從實驗向所需器材建一條容量為inf的邊

從器材向匯點連一條容量為花費的邊

然後跑最大流。

答案即為所以實驗的總價值-最大流。

為什麼???

我們可以想象,要實現最小割,就要割掉最小的實驗邊和最小的器材邊。

這些實驗是沒有實現的,而這些器材是用到的。

那麼總的收入就等於總代價-沒有實現的代價-器材帶來的成本

可以看最後一次查出阻塞流的時候有哪些點被bfs遍歷到了,如果被遍歷到了說明跟源點s在乙個子圖內

本**補充一下,其實是在linux下進行測試,不是出題人故意的.

cogs

luogu

#include 

#include

#include

#include

#define il inline

using

namespace

std;

const

int inf=0x7fffffff;

const

int maxm=110000;

int head[maxm],to[maxm*2],cap[maxm*2],net[maxm*2],deep[maxm],cnt=1;

il void add(int x,int y,int c)

queue

dl;int vis[maxm];

il bool bfs(int s,int t)

return deep[t]==-1?0:1;

}int dfs(int now,int flow,int t)

}if(!used) deep[now]=-1;

return used;

}il int dinic(int s,int t)

inline

void adx(int x,int y,int cax)

inline

bool read(int &res)

while (isdigit(ch))

if (ch == '\r') return

false; else

return

true;

}int main()

for(int i=1,c;i<=m;i++) read(c),adx(i+n,t,c);

int ans=dinic(s,t);

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

if(deep[i]!=-1) printf("%d ",i);

puts("");

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

if(deep[i+n]!=-1) printf("%d ",i);

puts("");

printf("%d\n",sum-ans);

return

0;}

洛谷 P2762 太空飛行計畫問題

題目背景 題目描述 w 教授正在為國家航天中心計畫一系列的太空飛行。每次太空飛行可進行一系列商業性實驗而獲取利潤。現已確定了乙個可供選擇的實驗集合e 和進行這些實驗需要使用的全部儀器的集合i 實驗ej需要用到的儀器是i的子集rj i。配置儀器ik的費用為ck美元。實驗ej的贊助商已同意為該實驗結果支...

洛谷P2762 太空飛行計畫問題

這題套路好深.沒想渠。題意 給你若干個裝置,若干個任務。每個任務需要若干裝置,裝置可重複利用。完成任務有錢,買裝置要錢。問最大總收益 可以什麼任務都不做 解 最大權閉合子圖。對於乙個有向圖,如果選擇了乙個點,那麼就要選擇它的所有後繼節點。求最大權值和。建立s,t,記所有正權值和為sum。s向所有權值...

P2762 太空飛行計畫問題 網路流

w 教授正在為國家航天中心計畫一系列的太空飛行。每次太空飛行可進行一系列商業性實驗而獲取利潤。現已確定了乙個可供選擇的實驗集合e 和進行這些實驗需要使用的全部儀器的集合i 實驗ej需要用到的儀器是i的子集rj i。配置儀器ik的費用為ck美元。實驗ej的贊助商已同意為該實驗結果支付pj美元。w教授的...