NK 2122 太空飛行計畫問題

2021-08-27 07:18:26 字數 1973 閱讀 8730

題目大意:

中文題意,不解釋。

題目思路:

最大權閉合圖。

詳解:

由於要輸出非選擇的實驗和儀器,喜歡用sap的兄弟最後從源點搜一遍,能遍歷到的點就是選擇了的。

**:

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

#define ll long long

#define ls rt<<1

#define rs ls|1

#define lson l,mid,ls

#define rson mid+1,r,rs

#define middle (l+r)>>1

#define eps (1e-8)

#define clr_all(x,c) memset(x,c,sizeof(x))

#define clr(x,c,n) memset(x,c,sizeof(x[0])*(n+1))

#define mod 1000000009

#define inf 0x3f3f3f3f

#define pi acos(-1.0)

#define _max(x,y) (((x)>(y))? (x):(y))

#define _min(x,y) (((x)<(y))? (x):(y))

#define _abs(x) ((x)<0? (-(x)):(x))

#define getmin(x,y) (x= ((x)<0 || (y)<(x))? (y):(x))

#define getmax(x,y) (x= ((y)>(x))? (y):(x))

template void _swap(t &x,t &y)

int ts,cas=1;

const int m=500+5;

int n,m;

struct sap

}; vectoredg; //邊表

vectorg[m]; //鄰接表

int n,m; //頂點數,邊數

int cur[m],dis[m];//當前弧,距離標號

int pre[m],gap[m];//上一條弧,間隙優化

void init(int _n)

}if(!ok)

if(--gap[dis[u]]==0) break;

gap[dis[u]=mindis+1]++;

if(u!=s) u=edg[pre[u]].from;

}} return res;

} int q[m],head,tail;

void gets(int s)

}} }

}p;void run()

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

int ans=tot-p.maxflow(0,n+m+1);

p.gets(0);

bool flag;

for(flag=0,i=n+1;i<=n+m;i++)puts("");

for(flag=0,i=1;i<=n;i++)puts("");

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

}void presof()

int main()

太空飛行計畫問題

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

太空飛行計畫問題

網路流最小費用問題 一開始看這個人的部落格 寫了4天了,還是沒能寫出自己的 後面面還有在這個oj上ac了的 照著這個人的 打,還是沒能想明白。這個 和這個oj上的不同,是簡化問題了的。只求最大收益 照著打的 include include include include define inf 999...

太空飛行計畫問題

跟拍照幾乎是重題。在輸出部分,若最後一次bfs還能到這個點,則可以輸出。只要有乙個點可以從源點過得去,就可以通過正或反流到達所有經過的點。但是我不明白若把所有專案都割掉了,那不就嘎嘎了。這裡也求廣大讀者說出自己的理解。看 includeusing namespace std define inf 1...