24題 試題庫問題 網路流

2022-09-03 06:27:12 字數 1319 閱讀 2082

假設乙個試題庫中有

n' role="presentation">n

n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取

m' role="presentation">m

m道題組成試卷。並要求試卷包含指定型別的試題。

這道題很明顯是乙個二分圖。所以首選di

nic' role="presentation">din

icdi

nic。

對於每乙個試卷,將它連向匯點

t' role="presentation">t

t,流量為所需的題目總數;而每一道題就連向原點

s' role="presentation">s

s,流量為

1' role="presentation">1

1。而中間則將每一道題連向它可以放入的試卷,流量為

1' role="presentation">1

1。之後跑一邊di

nic' role="presentation">din

icdi

nic,若

sum=

num' role="presentation">sum

=num

sum=

num則可以組成試卷,否則不行。

#include 

#include

#include

#include

#define inf 0x7f

#define inf 2147483647

using

namespace

std;

int n,m,k,s,t,head[3000001],dep[3000001],num,x,y,sum,ans;

struct edge

e[3000001];

void add(int from,int to,int c)

bool bfs() //分層不解釋}}

return (dep[t]int dfs(int u,int low)

}return0;}

bool print() //輸出不解釋

putchar(10);

}return

false;

}int main()

for (int j=1;j<=n;j++)

}while (bfs()) //只要能分層就迴圈

if (ansreturn

printf("no solution!\n")&0;

return print();

}

網路流24題 試題庫問題

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

網路流24題 試題庫問題

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

網路流24題 試題庫問題

有 k k 種型別和 n role presentation n n個題目,每個題目會適應部分型別,一種型別可能需要多種題,一道題可能多種型別都需要,但一道題只能滿足一種型別,現要求出滿足出完所有型別的題目的方案 網路流擅長於解決各種有要求的匹配,顯然這道題是有條件的匹配,可以用最大流來解決。首先建...