題目大意:
中文題意,不解釋。
題目思路:
最大權閉合圖。
詳解:
由於要輸出非選擇的實驗和儀器,喜歡用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...