牛客網多校第五場E room(最小費用最大流)

2021-08-22 14:58:08 字數 948 閱讀 6754

題目大意:一間學校有 n 間宿舍,每間宿舍有 4 個人,給出這個學校第一學年的宿舍安排

現在第二學年需要換寢室,換寢室是學生自己組隊,每四個人抱團,

現在你需要給他們安排具體的宿舍位置,使得換宿舍的人數量盡可能少

1<=n<=100

題目思路:

轉化為最小費用最大流解決的二分圖問題,對每個去年的宿舍,向每個今年的組合連一條邊,權值為1費用為需要搬的人數(4-相同的人數),源點到去年各點,今年各點到匯點,都連一條權值為1費用為0的最大流,跑一次費用流即可。

#include#include#include#include#include#define inf 1e9

using namespace std;

const int maxn=200+10;

struct edge

edge(int f,int t,int c,int fl,int co):from(f),to(t),cap(c),flow(fl),cost(co){}

};struct mcmf}}

}if(d[t]==inf) return false;

flow +=a[t];

cost +=a[t]*d[t];

int u=t;

while(u!=s)

return true;

}int min_cost()

}mm;

int n;

int a[maxn][maxn];

int b[maxn][maxn];

int get_num(int i,int j)}}

return 4-num;

}int main()

min_cost += mm.min_cost();

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

}return 0;

}

牛客多校(第五場)E room

將乙個房間當做乙個點,後來的房間與之前的房間中不用搬的人作為權值,建圖,跑最大權匹配,就是不用搬的人數,在減一下即可,km演算法,o n 3 include include include includeusing namespace std define n 200 define inf 0x3f...

2019 8 1 牛客多校第五場

index 牛客多校第五場 題號標題 通過率做法狀態a digits 2 1017 2383 簽到 bgenerator 1 555 3660 矩陣快速冪 十進位制優化 cgenerator 2 37 626 dgenerator 3 4 23 eindependent set 1 45 110 f...

2018牛客多校第五場 H subseq

傳送門 這場樹狀陣列用法專場,skydec說這題很套路的題,很簡單,然而處理處dp陣列後最後的貪心我想了半天還問了一蛤別人,菜不成聲.jpg,先處理出dp陣列,dp i 表示以a i 為開頭的從i到n的所有遞增子串行的方案數,本來應該用線段樹了,然而好多人使用了神奇的樹狀陣列,以前都是add函式從i...