【線性規劃與網路流24題 2】太空飛行計畫
time limit:10000ms memory limit:65536k
total submit:36 accepted:13
case time limit:1000ms
description
w 教授正在為國家航天中心計畫一系列的太空飛行。每次太空飛行可進行一系列商業性實驗而獲取利潤。現已確定了乙個可供選擇的實驗集合e=,和進行這些實驗需要使用的全部儀器的集合i=。實驗ej需要用到的儀器是i的子集rj屬於i。配置儀器ik的費用為ck美元。實驗ej的贊助商已同意為該實驗結果支付pj美元。w教授的任務是找出乙個有效演算法,確定在一次太飛行中要進行哪些實驗並因此而配置哪些儀器才能使太空飛行的淨收益最大。這裡淨收益是指進行實驗所獲得的全部收入與配置儀器的全部費用的差額。
對於給定的實驗和儀器配置情況,程式設計找出淨收益最大的試驗計畫。
由於本oj無special judge , 所以只需要輸出最多能得到的淨獲利。
input
第1行有2 個正整數m和n。m是實驗數,n是儀器數。(n,m<=50)
接下來的m 行,每行是乙個實驗的有關資料。第乙個數贊助商同意支付該實驗的費用;
接著是該實驗需要用到的若干儀器的編號。最後一行的n個數是配置每個儀器的費用。
output
一行,包含乙個整數,表示最大淨收益
sample input
2 310 1 2
25 2 3
5 6 7
sample output
17source
感謝 wo_ai_wangyuan 修改題目並放上資料
這道題需要我們來轉乙個彎
首先我們求的是最大利益,這個利益應該是sum-sum 的最大值,其中i是被選中的實驗,j是需要的儀器
因此我們應該求出sum+sum的最小值,其中k是未被選中的實驗
這裡我們應該求的是最小割,因為刪除了這些邊,整個圖都是不連通的
#include#includeusing namespace std;
const int maxn=105,inf=1e9;
int n,m,g[maxn][maxn],op,ed;
int dis[maxn],vd[maxn];
string ss;
int dfs(int u,int flow)
if(dis[op]>=ed)return delta;
vd[dis[u]]--;
if(vd[dis[u]]==0)dis[op]=ed;
dis[u]++;
vd[dis[u]]++;
return delta;
} int main(){
cin>>m>>n;
int i,j,temp=0,sum=0;
op=n+m+1,ed=op+1;
for(i=1;i<=m;i++){
cin>>g[op][i];
sum+=g[op][i];
getline(cin,ss);
ss+=" ";
temp=0;
for(j=1;j>g[i+m][ed];
int ans=0;
while(dis[op]
太空飛行計畫
太空飛行計畫 題目描述 輸入格式 2209.in 檔案第1行有2 個正整數m和 n。m是實驗數,n是儀器數。接下來的 m行,每行是乙個實驗的有關資料。第乙個數贊助商同意支付該實驗的費用 接著是該實驗需要用到的若干儀器的編號。最後一行的 n個數是配置每個儀器的費用。1 n,m 50 輸出格式 2209...
太空飛行計畫問題
w 教授正在為國家航天中心計畫一系列的太空飛行。每次太空飛行可進行一系列商業性實驗而獲取利潤。現已確定了乙個可供選擇的實驗集合 e 和進行這些實驗需要使用的全部儀器的集合i 實驗 ej需要用到的儀器是i的子集j i。配置儀器ik的費用 為ck美元。實驗ej的贊助商已同意為該實驗結果支付pj美元。w教...
太空飛行計畫問題
網路流最小費用問題 一開始看這個人的部落格 寫了4天了,還是沒能寫出自己的 後面面還有在這個oj上ac了的 照著這個人的 打,還是沒能想明白。這個 和這個oj上的不同,是簡化問題了的。只求最大收益 照著打的 include include include include define inf 999...