COGS732 網路流24題 試題庫

2022-05-13 16:09:23 字數 1966 閱讀 7306

«問題描述:

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

«程式設計任務:

對於給定的組卷要求,計算滿足要求的組卷方案。

«資料輸入:

由檔案testlib.in提供輸入資料。檔案第1行有2個正整數k和n (2 <=k<= 20, k<=n<= 1000)k 表示題庫中試題型別總數,n 表示題庫中試題總數。第2 行有k 個正整數,第i 個正整數表示要選出的型別i 的題數。這k個數相加就是要選出的總題數m。接下來的n行給出了題庫中每個試題的型別資訊。每行的第1 個正整數p表明該題可以屬於p類,接著的p個數是該題所屬的型別號。

«結果輸出:

程式執行結束時,將組卷方案輸出到檔案testlib.out 中。檔案第i 行輸出 「i:」後接型別i的題號。如果有多個滿足要求的方案,只要輸出1 個方案。如果問題無解,則輸出「nosolution!」。

輸入檔案示例

testlib.in

3 15

3 3 4

2 1 2

1 31 3

1 31 3

3 1 2 3

2 2 3

2 1 3

1 21 2

2 1 2

2 1 3

2 1 2

1 13 1 2 3

輸出檔案示例

testlib.out

1: 1 6 8

2: 7 9 10

3: 2 3 4 5

網路流 最大流

如果最大流等於m,那麼有解,遍歷從題型到題號的所有邊,記錄答案即可

1

/*by silvern

*/2 #include3 #include4 #include5 #include6 #include7 #include8 #include9

using

namespace

std;

10const

int inf=1e9;

11const

int mxn=1050;12

intread()

15while(ch>='

0' && ch<='9')

16return x*f;17}

18struct

edgee[mxn*80

];21

int hd[mxn],mct=1;22

void add_edge(int u,int v,int

f)27

void insert(int u,int v,int

f)30

intn,k,s,t;

31int

d[mxn];

32bool

bfs()45}

46}47return

d[t];48}

49int dfs(int u,int

lim)62}

63 d[u]=0;64

return

f;65}66

intdinic()

71 vectorq[mxn];

72void

print()79}

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

85 printf("\n"

);86}87

return;88

}89int m=0;90

intmain()

102for(i=1;i<=n;i++)

108}

109for(i=1;i<=n;i++)insert(i+k,t,inf);

110int ans=dinic();

111if(ans==m)print();

112else printf("

nosolution!\n");

113return0;

114 }

cogs 732 網路流24題 試題庫

網路流24題 試題庫 輸入檔案 testlib.in 輸出檔案 testlib.out 評測外掛程式 時間限制 1 s 記憶體限制 128 mb 問題描述 假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取m 道題組成試卷。並要求試卷包含指定型別的試題...

COGS461 網路流24題 餐巾

問題描述 乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾 i l,2,n 餐廳可以從三種途徑獲得餐巾。1 購買新的餐巾,每塊需p分 2 把用過的餐巾送到快洗部,洗一塊需m天,費用需f分 f 3 把餐巾送到慢洗部,洗一塊需n天 n m 費用需s分 s在每天結束時,餐廳必須決定多少塊用過的餐巾送到快洗部,...

Cogs 729 網路流24題 圓桌聚餐

網路流24題 圓桌聚餐 輸入檔案 roundtable.in 輸出檔案 roundtable.out 評測外掛程式 時間限制 1 s 記憶體限制 128 mb 問題描述 假設有來自m 個不同單位的代表參加一次國際會議。每個單位的代表數分別為 ri i 1,2,3 m 會議餐廳共有n張餐桌,每張餐桌可...