題意:
假設乙個試題庫中有 n 道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。
現要從題庫中抽取 m 道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。
思路:1. 試卷和屬性分別定義為 x, y 集。每個試卷有多重屬性,二分圖多重匹配。
code:
#include #include #include #include #include #include #include #include using namespace std;
#define rep(i, l, r) for (int i = l; i <= r; i++)
#define rep(i, l, r) for (int i = l; i >= r; i--)
#define maxn 100010
int n, m, sum = 0, n = -1, first[maxn], next[maxn], s, t, dis[maxn];
struct tlist a[maxn];
queueq;
vectorv;
inline void add(int x, int y, int f)
inline bool bfs()
} return ~dis[t];
}inline int find(int x, int low)
return sum;
}inline int dinic(int begin, int end)
int main()
rep(i, 1, m) add(n + i, n + m + 1, 1);
dinic(0, n + m + 1);
rep(_, 1, n)
return 0;
}
網路流 24 題
1 搭配飛行員 題意 n個飛行員,其中有m名飛行員是正駕駛員。飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。思路 裸二分圖匹配 最大流 題 版本一 網路流做法 引入源點s 0以及匯點t n...
網路流24題
學會網路流演算法後,我們要做的就是把問題轉化成網路流問題。求二分圖最大匹配。網路流建模要找到問題的關鍵特點,用連邊,流量 以及費用 把原問題轉化成網路流問題,包括最大流,最小割,費用流。二分圖最大匹配的特點是每個點最多屬於一條匹配邊。這相當於是說,每個點只能流過一次。要求的是最大匹配,可以得出建模為...
網路流24題
經典問題,做了一部分 太水的就不記錄了 最大流是對於一種完整的匹配的處理,一條路乙個貢獻。要求匹配盡可能多。費用流是對於乙個路徑的最值的處理,每條邊自己的費用。再匹配最多前提下,匹配的費用達到最值。難點就是對於條件狀態的設計 網路流24題 餐巾計畫問題 費用流建模 考慮每天一定有ri條髒毛巾,所以髒...