假設乙個試題庫中有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...