【POJ1698】Alice's Chance-二分图多重匹配
来源:互联网 发布:linux python 编辑器 编辑:程序博客网 时间:2024/05/17 07:09
测试地址:Alice's Chance
题目大意:演员Alice接到N个拍电影任务,一部电影在一周中只有某些日子能拍,并且每部电影都有一定的任务(至少要拍D天)和期限(在W周内拍完),而Alice一天只能去拍一部电影,求能不能制定一个排片计划,使得Alice能够接下所有拍电影的任务。
做法:从题目中可以看出,电影与每一天之间是一对多的匹配关系,因此可以用二分图模型中的多重匹配来解决,代码写起来很像匈牙利算法。
以下是本人代码:
#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int T,n,limit[25],able[10],bmap[25][510],maxw;int cx[510],cy[25][510];bool vis[25];bool findpath(int u){ for(int i=1;i<=n;i++) { if (bmap[i][u]&&!vis[i]){ vis[i]=1; if (cy[i][0]<limit[i]) { cy[i][++cy[i][0]]=u;return 1; } else { for(int j=1;j<=cy[i][0];j++) if (findpath(cy[i][j])) { cy[i][j]=u; return 1; } }} } return 0;}bool mulmatch(){ int ans=0,s=0; memset(cx,0,sizeof(cx)); memset(cy,0,sizeof(cy)); for(int i=1;i<=maxw*7;i++) { memset(vis,0,sizeof(vis)); if (!cx[i]){ if (findpath(i)) ans++; } } for(int i=1;i<=n;i++) s+=limit[i]; return ans==s;}int main(){ scanf("%d",&T); while(T--) { memset(bmap,0,sizeof(bmap)); scanf("%d",&n);maxw=0;for(int i=1,w;i<=n;i++){ memset(able,0,sizeof(able)); for(int j=1;j<=7;j++) scanf("%d",&able[j]); scanf("%d%d",&limit[i],&w); maxw=max(w,maxw); for(int j=1;j<=7;j++) if (able[j]){ for(int k=0;k<w;k++) bmap[i][k*7+j]=1; }}if (mulmatch()) printf("Yes\n");else printf("No\n"); } return 0;}
0 0
- 【POJ1698】Alice's Chance-二分图多重匹配
- poj 1698 Alice's Chance 二分图多重匹配
- POJ - 1698 Alice's Chance (二分图多重匹配)
- POJ1698 Alice's Chance(最大匹配)
- poj1698 - Alice's Chance
- POJ1698 Alice's Chance
- poj1698 Alice's Chance
- Alice's Chance【多重匹配】
- 网络流 -- Alice's Chance(二分图多重最大匹配/最大流)
- POJ 1698 Alice's Chance 二分图多重匹配 网络最大流
- poj1698二分图多重匹配
- poj 1698 Alice's Chance 二分图最大匹配
- poj1698 Alice's Chance 最大流
- poj1698 - Alice's Chance (最大流)
- poj1698 - Alice's Chance (最大流)
- 【网络流】:poj1698,Alice's Chance
- [网络流]poj1698 Alice's chance
- POJ1698 Alice's Chance 最大流Dinic
- 分治策略求解递归式之主方法
- hdu 5729 (联通二分图数目 dp+组合数)
- Spring MVC学习笔记2
- 同一环境下新建Standby RAC库
- android进阶之路
- 【POJ1698】Alice's Chance-二分图多重匹配
- Maven私有库和本地库的安装与配置
- [BZOJ3211&3038][上帝造题的七分钟2&花神游历各国][线段树]
- SVM、LIBSVM、LIBLINEAR写的不错的博文
- Mysql
- 任务堆栈
- java蝴蝶效应
- Celery架构
- in、or、exists区别