poj3698(二分图最大匹配 + 拆点)
来源:互联网 发布:网络本科需要统考么 编辑:程序博客网 时间:2024/05/14 02:59
思路:把电影拆开,,,对于每部电影的去的天数呢分开,,(1...d1)(d1 + 1.....d1 + d2)....入上面这种拆点。
然后就是每周的周几可以去,就把周扩展成天:比如说1表示第一周的周一,8表示第二周的周一,如此类推,
用上下这种扩展的方式简图,,,只要最后的匹配数目等于总的天数,那么就是可以的。
点击题目链接
/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <algorithm>#include <iomanip>#include <sstream>#include <string>#include <stack>#include <queue>#include <deque>#include <vector>#include <map>#include <set>#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <limits.h>using namespace std;#define MEM(a,b) memset(a,b,sizeof a)typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> ii;const int inf = 1 << 30;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;int T,n;int d,w;int day[8];int g[1010][400];int vN,uN;int link[410];bool vis[410];bool dfs(int u){for (int i = 1;i <= vN;i++){if (g[u][i] && !vis[i]){vis[i] = true;if (link[i] == -1 || dfs(link[i])){link[i] = u;return true;}}}return false;}int Hungary(){int ret = 0;MEM(link, -1);for (int i = 1;i <= vN;i++){MEM(vis, false);if (dfs(i)) ret++;}return ret;}int main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);cin >> T;while(T--){cin >> n;int st = 1,ed = 0;int sum = 0;uN = vN = 0;MEM(g, 0);MEM(day, 0);for (int i = 1;i <= n;i++){for (int j = 1;j <= 7;j++){scanf("%d",&day[j]);}scanf("%d%d",&d,&w);for (int j = st;j < st + d;j++){for (int k = 1;k <= 7;k++){for (int l = 0;l < w;l++){g[j][k + l * 7] = day[k];}}}st += d;sum += d;vN = max(vN,7 * w);}uN = st - 1;int ans = Hungary();if (ans == sum) puts("Yes");else puts("No");}return 0;}
0 0
- poj3698(二分图最大匹配 + 拆点)
- POJ 3692 最小点覆盖 最大二分图匹配
- hdu 1150 二分图 最小点覆盖=最大匹配
- poj 3041 二分图最大匹配(最小点覆盖问题)
- HDU2119_Matrix(二分图/最小点覆盖=最大匹配)
- poj 3041 二分图最大匹配 最小点覆盖
- hdu 1150 二分图最大匹配最小点覆盖
- POJ 3401 Asteroids 二分图最大匹配 最小点覆盖
- 二分图-最大匹配,最小路径覆盖,最小点覆盖
- 最小点覆盖和二分图最大匹配(证明)
- 最小点集覆盖=最大匹配<二分图>/证明
- POJ 3041 Asteroids(二分图最大匹配-最小点覆盖)
- 二分图 最大匹配 之最小点覆盖
- 二分图最大匹配
- 二分图最大匹配 。
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 图片 处理地址 压缩图片和批量修改后缀名
- android 的四种枚举Context.MODE_PRIVATE
- Android基础入门教程——2.4.12 ExpandableListView(可折叠列表)的基本使用
- Android实战简易教程<二十七>(Android设置头像上传功能实现)
- Static class 与non static class的区别
- poj3698(二分图最大匹配 + 拆点)
- 构建自己的Camera应用程序
- Android项目上传到SVN,需要上传的文件和不需要上传的文件
- AT 命令发送中文短信
- Android动态设置控件大小以及设定margin以及padding值
- Android音频实时传输与播放(二):服务端
- uvalive 3490
- android 定义颜色color时6位或8位值的区别
- 0130 分布式网站架构后续:zookeeper技术浅析