题目描述:
假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m 道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算法。
洛谷上这题是紫题,觉得有点过分了,建模很好想,借用一张图,侵删
跑个最大流就行了
dinic代码:
1 #include2 #define N 100010 3 #define inf 2147483647 4 #define ll long long 5 using namespace std; 6 int q[N]; 7 int n,k,cnt,st,t,m; 8 int dis[200000],ans,head[N]; 9 bool vis[200000]; 10 struct node 11 { 12 int nex,to,val; 13 }e[N]; 14 15 void add(int x,int y,int z) 16 { 17 e[++cnt].nex=head[x]; 18 e[cnt].to=y; 19 e[cnt].val=z; 20 head[x]=cnt; 21 } 22 23 void ins(int x,int y,int z) 24 { 25 add(x,y,z);add(y,x,0); 26 } 27 28 bool bfs() 29 { 30 memset(dis,-1,sizeof(dis)); 31 int l=0,r=1,u; 32 q[0]=dis[0]=0; 33 while (l 0&&!e[j].val)107 printf("%d ",e[j].to-k);108 }109 cout<