«
問題描述:
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 的贊助商已同...