码迷,mamicode.com
首页 > 其他好文 > 详细

网络流24题 2/24

时间:2018-10-14 16:29:36      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:line   git   开始   div   color   tle   return   bool   font   

我这种蒟蒻也要开始做网络流了啊qwq

飞行员配对方案问题

二分图匹配**题,匈牙利都能过

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 bool vis[101];
 4 int match[101] , head[101] , cnt;
 5 struct Edge{
 6     int end , upEd;
 7 }Ed[10001];
 8 inline void add(int a , int b){
 9     Ed[++cnt].end = b;    Ed[cnt].upEd = head[a];    head[a] = cnt;
10 }
11 bool dfs(int a){
12     for(int i = head[a] ; i ; i = Ed[i].upEd)
13         if(!vis[Ed[i].end]){
14             vis[Ed[i].end] = 1;
15             if(!match[Ed[i].end] || dfs(match[Ed[i].end])){
16                 match[Ed[i].end] = a;
17                 return 1;
18             }
19         }
20     return 0;
21 }
22 int main(){
23     int M , N , ans = 0 , a , b;
24     scanf("%d%d%d%d" , &M , &N , &a , &b);
25     while(a != -1){
26         add(a , b - M);
27         scanf("%d%d" , &a , &b);
28     }
29     for(int i = 1 ; i <= M ; i++){
30         memset(vis , 0 , sizeof(vis));
31         dfs(i);
32     }
33     for(int i = 1 ; i + M <= N ; i++)    ans += (bool)match[i];
34     if(ans == 0)    cout << "No Solution!";
35     else{
36         cout << ans << endl;
37         for(int i = 1 ; i + M <= N ; i++)
38             if(match[i])    cout << match[i] <<   << i + M << endl;
39     }
40     return 0;
41 }

负载平衡问题

环形均分纸牌大法吼啊

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 inline int read(){
 4     int a = 0;
 5     char c = getchar();
 6     while(!isdigit(c))    c = getchar();
 7     while(isdigit(c))    a = (a << 3) + (a << 1) + (c ^ 0) , c = getchar();
 8     return a;
 9 }
10 inline int abs(int a){
11     return a > 0 ? a : -a;
12 }
13 long long S[1000001];
14 int main(){
15     int n = read();
16     long long sum = 0;
17     for(int i = 1 ; i <= n ; i++)
18         sum += S[i] = read();
19     sum /= n;
20     for(int i = 1 ; i <= n ; i++)
21         S[i] += S[i - 1] - sum;
22     sort(S + 1 , S + n + 1);
23      sum = 0;
24     for(int i = 1 ; i <= n ; i++)
25         sum += abs(S[i] - S[n + 1 >> 1]);
26     printf("%lld" , sum);
27     return 0;
28 }

 

网络流24题 2/24

标签:line   git   开始   div   color   tle   return   bool   font   

原文地址:https://www.cnblogs.com/Itst/p/9786016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!