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

2021-07-28 13:59:20 字數 1963 閱讀 1351

«

問題描述:

w 教授正在為國家航天中心計畫一系列的太空飛行。每次太空飛行可進行一系列商業

性實驗而獲取利潤。現已確定了乙個可供選擇的實驗集合

e=,和進行這

些實驗需要使用的全部儀器的集合

i=。 實驗 ej

需要用到的儀器是

i 的子集 rj

íi。配置儀器 ik

的費用為 ck

美元。實驗 ej

的贊助商已同意為該實驗結果支付 pj

美元。w

教授的任務是找出乙個有效演算法, 確定在一次太空飛行中要進行哪些實驗並因此而配置哪些儀器才

能使太空飛行的淨收益最大。這裡淨收益是指進行實驗所獲得的全部收入與配置儀器的全部

費用的差額。

«程式設計任務:

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

«資料輸入:

由檔案

input.txt

提供輸入資料。檔案第

1 行有

2 個正整數

m 和 n。

m 是實驗數,

n 是儀

器數。接下來的

m 行,每行是乙個實驗的有關資料。第乙個數贊助商同意支付該實驗的費

用;接著是該實驗需要用到的若干儀器的編號。最後一行的

n 個數是配置每個儀器的費用。

«結果輸出

:程式執行結束時,將最佳實驗方案輸出到檔案

output.txt

中。第

1 行是實驗編號;第

2行是儀器編號;最後一行是淨收益

輸入檔案示例

input.txt

2 310 1 2

25 2 3

5 6 7

輸出檔案示例

output.txt

1 21 2 3

17題解:題解:這題的模型是最大權閉合子圖,建圖方式為超級源s到每個實驗建一條容量為實驗贊助費的有向邊,實驗向所有它需要的儀器連一條容量為無窮大的有向邊,儀器向超級匯連一條容量為儀器費用的有向邊,這樣求出來的值記為dinic

計算所有實驗的贊助費之和sum

ans=sum-dinic

#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

const int maxm=1000005;

const int maxn=1000005;

const int oo=2147483647;

int i,n,m,len,s,t,x,ans,sum;

int head[maxn];

int vis[maxn];

int dis[maxn];

int cur[maxn];

char c;

struct edge

edge(int x,int y,int z,int w,int t)

} e[maxm];

void add(int u,int v,int c,int f)

int bfs()

}return vis[t];

}int dfs(int x,int a)

return flow;

}int dinic()

return flow;

}int main()

if(c=='\n')

break;

}else

ans=ans*10+c-'0';}}

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

s=1;

t=2+n+m;

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

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題2 太空飛行計畫問題

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