網路流24題 太空飛行計畫SPJ(最大流)

2022-08-22 02:15:11 字數 1280 閱讀 5630

w 教授正在為國家航天中心計畫一系列的太空飛行。每次太空飛行可進行一系列商業性實驗而獲取利潤。現已確定了乙個可供選擇的實驗集合 e=,和進行這些實驗需要使用的全部儀器的集合 i=。 實驗 ej 需要用到的儀器是 i 的子集 rj∈i。配置儀器 ik 的費用為 ck 美元。實驗 ej 的贊助商已同意為該實驗結果支付 pj 美元。w 教授的任務是找出乙個有效演算法, 確定在一次太空飛行中要進行哪些實驗並因此而配置哪些儀器才能使太空飛行的淨收益最大。這裡淨收益是指進行實驗所獲得的全部收入與配置儀器的全部費用的差額。 

對於給定的實驗和儀器配置情況,程式設計找出淨收益最大的試驗計畫,輸出最大收益值。

第 1 行有 2 個正整數 m 和 n 。m 是實驗數,n是儀器數。接下來的 m行,每行是乙個實驗的有關資料。第乙個數贊助商同意支付該實驗的費用;接著是該實驗需要用到的若干儀器的編號。最後一行的 n個數是配置每個儀器的費用。

輸出乙個整數,即最大的淨收益值。

2 310 1 2

25 2 3

5 6 7

17本題難點不在於建圖,而在於讀入。。。對於s向每個實驗連一條邊,邊權為可贊助最大費用,每個實驗向所需儀器連邊,邊權設為正無窮,每台儀器向t連邊,邊權為儀器費用,跑一遍最大流即為最小花費,用總收益-最小花費即為最大收益。

#includeusing namespace std;

const int maxn=3010;

const int inf=0x3f3f3f3f;

int cnt,n,m,s,t;

int head[maxn],depth[maxn],cur[maxn];

int nxt[maxn],to[maxn],w[maxn];

queueq;

int vis[maxn];

int ans[maxn];

bool bfs()

} }if(depth[t]==0)

return false;

return true;

}int dfs(int u,int dist)

} }return 0;

}int dinic()

return ans;

}void add(int x,int y,int z)

void add(int x,int y,int z)

int main()

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

int tmp=dinic();

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

return 0;

}

網路流24題 太空飛行計畫

題目 洛谷p2762 解法 考慮網路流建模。設定點 1 1 n role presentation style position relative n n表示每種儀器,點n 1 n 1 n m n m 表示每個專案,超源 s s 超匯t role presentation style positio...

網路流24題 太空飛行計畫

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

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

網路流24題大多需要spj,所以需要乙個有spj的oj,本系列 均在www.oj.swust.edu.cn測試通過 最大權閉合子圖裸題,先將所有收益加起來,源點向每個方案連線一條收益的流,每個方案向對應需要的儀器連一條inf,每個儀器向匯點連一條花費的流。輸出方案只需要在最後的阻塞流中看還剩哪幾個點...