網路流24題 試題庫問題

2021-08-25 16:51:37 字數 1107 閱讀 9507

luogu 2763

現在要編組m套試卷m,給出每套試卷要出幾道題。試題庫裡有n道題目,並給出每道題目可以出在哪些試卷上。求解一種組卷的方案,無方案則輸出無解。

如不知道網路流的話可以把每套試卷拆成題所需數個點,連邊跑二分圖。不過這樣處理比較麻煩,時間複雜度能不能接受我也沒試

用網路流解決更直觀簡單。

1.超級匯點向每個試卷連流量為所需題數的邊。

2.每套試卷向可用題目連流量為1的邊。

3.每道題目向超級匯點連流量為1的邊。

跑一邊最大流,如果最大流和總共所需題目數量一致,則存在方案。

具體方案對每個試卷搜殘量網路,如果一條連向題目的邊流量為0,則該題目被該試卷採用。

這個**可以用來當板,用在很多題上了,注意一下cur陣列的預處理範圍就好了(不要這個當前弧優化也可以= =)

#include#include#include#define maxn 1109

#define inf 0x3fffffff

using namespace std;

int s,t;

int n,k;

int du[maxn],dis[maxn],dl[maxn];

vector f[maxn],fb[maxn],flow[maxn];

int cur[maxn];//當前弧優化

int a[30][30];

int load[30],num[30];

void add(int x,int y,int z)

bool bfs(int begin,int end)

}while(t0) return true;

else return false;

}int find(int x,int mflow,int y)

} return 0;

}int solve(int x,int y)

return ans;

}int main()

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

if(solve(s,t)!=ck)

for(int i=1;i<=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...

網路流24題 試題庫問題

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