網路流24題 試題庫問題 最大流

2021-08-21 19:40:06 字數 1294 閱讀 1369

假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取m 道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。

好像題目的描述有一點問題,但是看樣例就沒有問題了。首先我們要知道每乙個題目雖然有很多種型別,但是在試卷中只可以當做是乙個型別的題目來呈現。用題目和型別連一條流量為1的邊來表示這個題目可以選擇這個型別來呈現,同時每乙個題目和源點連一條流量為1的邊表示這個題目總共只可以呈現一種型別,每一種型別和匯點連一條為這個型別題目數量的邊,表示這個型別的題目上限是這麼多,最後判斷一下總流量是不是等於m就好了。

/**************************=

* author : ylsoi

* problem : luogu2763

* algorithm : max_flow

* time : 2018.7.27

* ********************====*/

#include

#define rep(i,a,b) for(int i=a;i<=b;++i)

typedef

long

long ll;

using

namespace

std;

void file()

const

int maxk=20+10;

const

int maxn=1000+10;

const

int maxe=maxn*maxk+10;

const

int inf=0x3f3f3f3f;

int ss,tt,n,k,m,ans;

int las[maxe<<1],to[maxe<<1],beg[maxe],flow[maxe<<1],cnte=1;

void add(int u,int v,int f)

struct dinic

}return num[tt]!=0;

}int dfs(int u,int gap)

if(!gap)break;

}return ret;

}void work()

}}t;void init()

rep(i,1,n)

}}vector

****[maxk];

int main()

rep(i,1,k)sort(****[i].begin(),****[i].end());

rep(i,1,k)

}return

0;}

網路流24題 試題庫問題(最大流)

cogs 簡單題這題應該很裸 因為每個試題限用一次 所以從源點向每個題目連邊,容量為1 然後每個型別的題目有限制 從型別向匯點連邊,容量為所需的題目數 然後就是題目向型別的匹配 和它對應的型別連邊,容量為1 然後直接跑最大流輸出就行了 include include include include ...

網路流24題 試題庫問題

網路流24題大多需要spj,所以需要乙個有spj的oj,本系列 均在www.oj.swust.edu.cn測試通過 這道題的模型很顯然,源點向每個試卷連線一條容量為1的邊,每個試卷向對應的型別連線一條容量為一的邊,每個型別向匯點連線一條容量為需要數量的邊,跑一邊最大流即可。include inclu...

網路流24題 試題庫問題

傳送門 這個題好像比較水。每個種類向匯點連容量為所需求的數量的邊 然後每個試題向可以選的種類連容量為1的邊 再從源點向每個試題連容量為1的邊,然後dinic 過程中記錄一下轉移的目標節點,然後輸出路徑就好了 判無解不用我說了吧。include include include include incl...