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

2022-05-12 10:22:53 字數 1021 閱讀 3642

傳送門

解題思路

比較簡單的網路流,建圖還是比較好想的。讓源點向試題連流量為1的邊,試題向所屬型別連流量為1的邊,型別向匯點連流量為需要此類試題的邊。直接跑最大流,輸出答案時找到那些滿流的邊所對的點。

#include#include

#include

#include

#include

using

namespace

std;

const

int maxn = 2005

;const

int maxm = 50005

;const

int inf = 0x3f3f3f3f

;inline

intrd()

while(isdigit(ch))

return f?x:-x;

}int k,n,head[maxn],cnt=1

,d[maxn],sum,sum;

int s=0,t=2000,to[maxm<<1],nxt[maxm<<1],val[maxm<<1

];queue

q;vectorans[maxn];

inline

void add(int bg,int ed,int

w)bool

bfs()}}

return

false;}

int dinic(int x,int

flow)

}return flow-res;

}int

main()

}for(int i=1;i<=n;i++) add(s,i+k,1),add(i+k,s,0

);

while(bfs()) sum+=dinic(s,inf);

//cout

for(int j=head[i];j;j=nxt[j])

for(int i=1;i<=k;i++)

return0;

}

view code

網路流問題 P2763 試題庫問題

問題描述 假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取m 道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。程式設計任務 對於給定的組卷要求,計算滿足要求的組卷方案。輸入格式 第1行有2個正整數k和n 2 k 20,k ...

題解 P2763 試題庫問題 網路流

考慮乙個試題要被加入進答案的集合有什麼條件?就這兩種且的限制,所以我們用串聯的方式連線 型別點 和 作用點 判斷無解就判斷容量是否滿了。輸出方案就輸出有流量的邊的終點。winlere include include include include includeusing namespace std...

P2763 試題庫問題 最大流

原題 題解 其實就是就是n個試題和k配對。建圖方法 s連i i n j連t j k 且邊的流量是a i 如題連i j就行了。跑一邊最大流,從k列舉,輸出答案。然而洛谷上要英文冒號。include define inf 0x7fffffff using namespace std const int ...