試題庫問題(網路流)

2021-08-19 17:14:20 字數 1951 閱讀 1653

假設乙個試題庫中有

n n

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

m' role="presentation">m

m道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。

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

1

行有2' role="presentation">2

2個正整數

k k

和n' role="presentation">nn(

2≤k≤

20,k≤

n≤1000

) (2≤

k≤20,

k≤n≤

1000

)k k

表示題庫中試題型別總數,

n' role="presentation">n

n表示題庫中試題總數。第

2 2

行有k k

個正整數,第

i i

個正整數表示要選出的型別

i i

的題數。這

k' role="presentation">k

k個數相加就是要選出的總題數

m m

。接下來的

n' role="presentation">n

n行給出了題庫中每個試題的型別資訊。每行的第

1 1

個正整數

p p

表明該題可以屬於

p' role="presentation">p

p類,接著的

p p

個數是該題所屬的型別號。第i

' role="presentation">i

i行輸出 「i

「 i:

」' role="presentation">」

」後接型別

i i

的題號。如果有多個滿足要求的方案,只要輸出

1' role="presentation">1

1個方案。如果問題無解,則輸出「n

o 「no

solutio

n!」 sol

utio

n!」。

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

1: 1 6 8

2: 7 9 10

3: 2 3 4 5

很久沒有做網路流了,寫一道比較裸的題。

#include

using

namespace

std;

int n,k,m,s=0,t=1800,cnt=0,head[2000],sta[2000];

struct edgee[200010];

void add(int u,int v,int w,int tag);

head[u]=cnt++;

}bool bfs()

// if(u==t)break;

}return sta[t];

}int dfs(int u,int a)

return ret;

}int dinic()

int main()

}maxf=dinic();

if(maxfprintf("no solution!");

return

0; }

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

return

0;}

網路流24題 試題庫問題

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

網路流24題 試題庫問題

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

洛谷 試題庫問題 網路流

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