POJ1698 Alice's Chance(最大匹配)
来源:互联网 发布:mac驱动下载 编辑:程序博客网 时间:2024/05/17 21:57
题目大意:
Alice要拍N部电影,一天只能拍一部
每部电影规定在星期几拍摄,要在W个星期内拍D次
问Alice是否可以拍完所有电影
这道题目关键是构图,可以用最大流做
由于我只会isap,写起来太麻烦,所以选择用好写的最大匹配做
当然时间效率上慢了非常多
最大匹配的基本思路是:
拍电影的总次数构成一个集合,每一个日期构成一个集合
若电影可以在某个日期拍摄则连起来,最后构成一个二分图
#include <stdio.h>#include <string.h>int xn,yn;int line[1005][355];int match[1005];int used[1005];int dfs(int u){int v;for(v=1;v<=yn;v++)if(line[u][v]&&!used[v]){used[v]=1;if(!match[v]||dfs(match[v])){match[v]=u;return 1;}}return 0;}int main(){int i,j,k,t,n,d,w,f[7],ans;scanf("%d",&t);while(t--){memset(match,0,sizeof(match));memset(line,0,sizeof(line));yn=ans=0;xn=1;scanf("%d",&n);while(n--){for(i=0;i<7;i++)scanf("%d",&f[i]);scanf("%d%d",&d,&w);for(i=xn;i<xn+d;i++)for(j=0;j<w;j++)for(k=1;k<=7;k++)if(f[k-1])line[i][k+j*7]=1;xn+=d;yn=7*w>yn?7*w:yn;}for(i=1;i<xn;i++){if(dfs(i))ans++;memset(used,0,sizeof(used));}if(ans==xn-1)printf("Yes\n");elseprintf("No\n");}return 0;}
0 0
- 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
- Alice's Chance poj1698 最大流
- poj1698 - Alice's Chance
- POJ1698 Alice's Chance
- poj1698 Alice's Chance
- 【POJ1698】Alice's Chance-二分图多重匹配
- 【网络流】:poj1698,Alice's Chance
- [网络流]poj1698 Alice's chance
- poj1689 Alice's Chance(最大流)
- poj 1698 Alice's Chance 二分图最大匹配
- Alice's Chance【多重匹配】
- POJ 1698 Alice's Chance 最大流(两种算法)or二分匹配
- poj 1698 Alice's Chance(最大流)
- Codeforces Round 469 C 24 Game
- jquerymobile的helloworld
- HOOK钩子技术5 SSDT Inline Hook
- LeetCode 160 :Intersection of Two Linked Lists
- 算法导论18(B树)
- POJ1698 Alice's Chance(最大匹配)
- java+oracle+web(第七天) tomcat介绍 (四)实现https://www.igo.com 直接访问我的主页
- js 生成随机数方法
- 常用算法之排序算法四【归并排序】
- 机器学习实战 朴素贝叶斯
- 二叉平衡树
- sums
- 使用viewport的元数据、CSS和Javascript来为不同分辨率的屏幕设置合适的页面
- udp服务端和客户端程序设计