傳送門
解題思路
比較簡單的網路流,建圖還是比較好想的。讓源點向試題連流量為1的邊,試題向所屬型別連流量為1的邊,型別向匯點連流量為需要此類試題的邊。直接跑最大流,輸出答案時找到那些滿流的邊所對的點。
#include#includeview code#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;
}
網路流問題 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 ...