P2763 试题库问题 (网络流 最大流)
解题思路
比较简单的网络流,建图还是比较好想的。让源点向试题连流量为1的边,试题向所属类型连流量为1的边,类型向汇点连流量为需要此类试题的边。直接跑最大流,输出答案时找到那些满流的边所对的点。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector> using namespace std;
const int MAXN = ;
const int MAXM = ;
const int inf = 0x3f3f3f3f; inline int rd(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?:;ch=getchar();}
while(isdigit(ch)) {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return f?x:-x;
} int k,n,head[MAXN],cnt=,d[MAXN],sum,Sum;
int S=,T=,to[MAXM<<],nxt[MAXM<<],val[MAXM<<];
queue<int> Q;vector<int> ans[MAXN]; inline void add(int bg,int ed,int w){
to[++cnt]=ed,nxt[cnt]=head[bg],val[cnt]=w,head[bg]=cnt;
} bool bfs(){
while(Q.size()) Q.pop();memset(d,,sizeof(d));
d[S]=;Q.push(S);
while(!Q.empty()){
int x=Q.front();Q.pop();
for(register int i=head[x];i;i=nxt[i]){
int u=to[i];
if(!d[u] && val[i]) {
d[u]=d[x]+;Q.push(u);
if(u==T) return true;
}
}
}
return false;
} int dinic(int x,int flow){
if(x==T) return flow;
int res=flow,k;
for(register int i=head[x];i && res;i=nxt[i]){
int u=to[i];
if(d[u]==d[x]+ && val[i]){
k=dinic(u,min(flow,val[i]));
if(!k) d[u]=;
val[i]-=k;val[i^]+=k;res-=k;
}
}
return flow-res;
} int main(){
k=rd(),n=rd();int x,y;
for(int i=;i<=k;i++)
x=rd(),add(i,T,x),add(T,i,),Sum+=x;
for(int i=;i<=n;i++){
x=rd();
for(int j=;j<=x;++j){
y=rd();add(i+k,y,);add(y,i+k,);
}
}
for(int i=;i<=n;i++) add(S,i+k,),add(i+k,S,);
while(bfs()) sum+=dinic(S,inf);
// cout<<sum<<endl;
for(int i=;i<=k;i++)
for(int j=head[i];j;j=nxt[j]){
if(to[j]==T) continue;
if(!val[j^]) ans[i].push_back(to[j]-k);
}
for(int i=;i<=k;i++){
printf("%d: ",i);
for(int j=;j<ans[i].size();j++) printf("%d ",ans[i][j]);
printf("\n");
}
return ;
}
P2763 试题库问题 (网络流 最大流)的更多相关文章
- 【题解】 P2763 试题库问题(网络流)
P2763 试题库问题 考虑一个试题要被加入进答案的集合有什么条件? 是某种类型 只算作一次 就这两种且的限制,所以我们用串联的方式连接"类型点"和"作用点". ...
- 洛谷P2763 试题库问题(最大流)
传送门 网络流界的一股清流啊……终于没那么变态了…… 考虑一下怎么建图.对于每一个类型,我们从$S$向他连边,容量为它所需的题数,表明它要可以有这么多题,对于每一道题目,我们从它对应的类型向他连边,容 ...
- 洛谷 P2763 试题库问题【最大流】
s向所有类别属性连流量为当前类别属性需要的个数的边,所有题目向t连流量为1的边(表示只能选一次),所有属性向含有它的题连容量为1的边.跑一变dinic,结果小于m则无解,否则看每一个类别属性连出去的题 ...
- P2763 试题库问题(dinic)
P2763 试题库问题 dinic 搞个虚拟源点和汇点,瞎建建边就好辣. 偷张图↓↓ 如果没满流就是无解辣 输出方案咋办呢? 枚举每种类型,蓝后枚举它们的边 如果该边被使用了(通过判断反向边的流量), ...
- 【网络流24题】No.7 试题库问题 (最大流,二分图多重匹配)
[题意] 假设一个试题库中有 n 道试题. 每道试题都标明了所属类别. 同一道题可能有多个类别属性.现要从题库中抽取 m 道题组成试卷.并要求试卷包含指定类型的试题. 试设计一个满足要求的组卷算法. ...
- 洛谷 P2763 试题库问题(网络流24题之一)
题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取m 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法. ...
- 网络流问题 P2763 试题库问题
题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取m 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法. ...
- 【洛谷 P2763】 试题库问题(最大流)
题目链接 6/23 这是网络流23题里我第一个没看题解自己写出来一遍过的.. 这题应该是最简单的模型了吧. 从源点向每个类型连一条流量为这个类型要的题数,再从每个类型向可以属于这个类型的所有试题连一条 ...
- 洛谷P2763 试题库问题(最大流)
题意 $n$道试题,每道题有多种类别属性 抽取$m$道题组成试卷,要求包含指定的类型 输出方案 Sol 又是一道zz网络流 我的构图长这样,$k_i$表示第$i$道试题需要的数量 #include&l ...
随机推荐
- canvas的基础入门
canvas是定义在浏览器上的画布.它不仅仅是一个标签元素更是一个编程工具是一套编程的接口.利用它可以开发出很多东西,比如动画,游戏,动态的图表等富有变现力和感染力的应用.还可以开发出绚丽的3D动态效 ...
- position:relative/static/fixed/absolute定位的区别以及使用场景
absolute是相对于自己最近的父元素来定位的,relative是相对于自己来定位的 relative 不脱离文档流,absolute 脱离文档流.也就是说:relative 的元素尽管表面上看到它 ...
- vue axios----基于 Promise 的 HTTP 请求
vue axiosvue2.0之axios接口請求管理功能特性axios API開始使用get請求post请求多个请求并发拦截器移除一个拦截器:自定义的 axios 实例添加拦截器:vue2.0之ax ...
- top.location.href
window.location.href.location.href是本页面跳转 parent.location.href是上一层页面跳转 top.location.href是最外层的页面跳转 ...
- Mac电脑如何转换图片格式?ImageWell for Mac转换图片格式教程
想用Mac电脑转换图片格式?我想你可以借助ImageWell for Mac软件!ImageWell是一款简单好用的的图像处理工具,具有显示,编辑,处理,保存等功能.下面小编来为大家演示在Mac电脑上 ...
- Q:简单实现URL只能页面跳转,禁止直接访问
sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据,且不同标签页的session不能共享,通过此特性来控制某个页面只能通过上级页面同标签页跳转 ...
- leetcood学习笔记-167-两数之和 II - 输入有序数组
题目描述: 第一次提交: class Solution(object): def twoSum(self, numbers, target): """ :type num ...
- thinkphp 标签库驱动
任何一个模板引擎的功能都不可能是为你量身定制的,具有一个良好的可扩展机制也是模板引擎的另外一个考量,Smarty采用的是插件方法来实现扩展,Think\Template由于采用了标签库技术,比Smar ...
- bzoj1053题解
[题意分析] 本题中,x被称为反质数,当且仅当没有任意一个严格小于x的正整数的约数个数大于x的约数个数.求不超过N的最大反质数. [解题思路] 数据范围中最大的N=2*109. 首先可以证明,不超过N ...
- iptables开通某些端口
#!/bin/bash #define all variance or parameter WAH_INT="eth0" WAH_INT_IP="222.222.101. ...