[poj1698]Alice's Chance[网络流]
【转】原文:http://blog.csdn.net/wangjian8006/article/details/7926040
题目大意:爱丽丝要拍电影,有n部电影,规定爱丽丝每部电影在每个礼拜只有固定的几天可以拍电影,只可以拍前面w个礼拜,并且这部电影要拍d天,问爱丽丝能不能拍完所有的电影
第一行代表有多少组数据
对于每组数据第一行代表有n部电影
接下来2到n+1行,每行代表一个电影,每行9个数,前面7个数,1代表拍,0代表不拍,第8个数代表要拍几天,第9个数代表有几个礼拜时间拍
解题思路:
这题可以看做成二分图多重匹配,也可以用网络流实现,主要是建图,将图建好了就好说了
用s=0表示源点,t=371表示汇点
将371看做汇点的原因是,1-350表示每天,因为最多有50个星期....
351-370表示电影,因为电影最多只有20部
源点指向每部电影,最大容量为这部电影所拍摄的天数
电影指向天数,因为每天只能拍一部电影,若这天可以拍这部电影就表示最大容量为1
天数都指向汇点,最大容量都为1
这样建好图之后就可以直接从源点到汇点求最大流,看最大流是否等于每个电影天数相加只和,相等则可以拍完,不等则拍不完
/*
Memory 708K
Time 47MS
*/
#include <iostream>
#include <queue>
using namespace std;
#define min(a,b) (a>b?b:a)
#define MAXV 372
#define MAXINT INT_MAX int rc[MAXV][10]; //1到7为星期几,8是拍摄几天,9是在多少周内完成
int r[372][372]; //容量
int s,t,n,max_flow; //表示s源点与t汇点,n部电影 int parent[MAXV];
int dis[MAXV]; void read_graph(){
int i,j,k;
for(i=1;i<=n;i++){
r[0][i+350]=rc[i][8]; for(j=1;j<=7;j++){
if(rc[i][j]){
for(k=0;k<rc[i][9];k++)
r[i+350][j+k*7]=1;
}
}
} for(i=1;i<=350;i++) r[i][371]=1;
} int bfs(){
int k;
queue<int> q;
memset(dis,-1,sizeof(dis));
dis[t]=0; q.push(t);
while(!q.empty()){
k=q.front();
q.pop();
for(int i=0;i<372;i++){
if(dis[i]==-1 && r[i][k]){
dis[i]=dis[k]+1;
q.push(i);
}
}
if(k==s) return 1;
}
return 0;
} int dfs(int cur,int cp){
if(cur==t) return cp; int tmp=cp,t;
for(int i=0;i<372 && tmp;i++){
if(dis[i]+1==dis[cur] && r[cur][i]){
t=dfs(i,min(r[cur][i],tmp));
r[cur][i]-=t;
r[i][cur]+=t;
tmp-=t;
}
}
return cp-tmp;
} void dinic(){
max_flow=0;
while(bfs()){
max_flow+=dfs(s,MAXINT);
}
} int main(){
int i,j,ans,cnt;
scanf("%d",&cnt);
while(cnt--){
ans=0;s=0;t=371;
memset(r,0,sizeof(r)); scanf("%d",&n);
for(i=1;i<=n;i++){
for(j=1;j<=9;j++)
scanf("%d",&rc[i][j]);
ans+=rc[i][8];
} read_graph(); //建图
dinic(); if(ans==max_flow) printf("Yes\n");
else printf("No\n");
}
return 0;
}
[poj1698]Alice's Chance[网络流]的更多相关文章
- 2018.07.06 POJ1698 Alice's Chance(最大流)
Alice's Chance Time Limit: 1000MS Memory Limit: 10000K Description Alice, a charming girl, have been ...
- poj 1698 Alice‘s Chance
poj 1698 Alice's Chance 题目地址: http://poj.org/problem?id=1698 题意: 演员Alice ,面对n场电影,每场电影拍摄持续w周,每周特定几天拍 ...
- Alice's Chance POJ - 1698(按时间点建边)
Alice's Chance Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7791 Accepted: 3174 De ...
- 图论--网络流--最大流--POJ 1698 Alice's Chance
Description Alice, a charming girl, have been dreaming of being a movie star for long. Her chances w ...
- Alice's Chance
poj1698:http://poj.org/problem?id=1698 题意:爱丽丝要拍电影,有n部电影,规定爱丽丝每部电影在每个礼拜只有固定的几天可以拍电影,只可以拍前面w个礼拜,并且这部电影 ...
- Codeforces 1045. A. Last chance(网络流 + 线段树优化建边)
题意 给你 \(n\) 个武器,\(m\) 个敌人,问你最多消灭多少个敌人,并输出方案. 总共有三种武器. SQL 火箭 - 能消灭给你集合中的一个敌人 \(\sum |S| \le 100000\) ...
- Codeforces 1045A Last chance 网络流,线段树,线段树优化建图
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1045A.html 题目传送们 - CF1045A 题意 你有 $n$ 个炮,有 $m$ 个敌人,敌人排成一 ...
- POJ 1698 Alice's Chance
题目:Alice 要拍电影,每一天只能参与一部电影的拍摄,每一部电影只能在 Wi 周之内的指定的日子拍摄,总共需要花 Di 天时间,求能否拍完所有电影. 典型的二分图多重匹配,这里用了最大流的 din ...
- 【POJ 1698】Alice's Chance(二分图多重匹配)
http://poj.org/problem?id=1698 电影和日子匹配,电影可以匹配多个日子. 最多有maxw*7个日子. 二分图多重匹配完,检查一下是否每个电影都匹配了要求的日子那么多. #i ...
随机推荐
- linux 条件测试 ******
文件状态测试 -b filename 当filename 存在并且是块文件时返回真(返回0) -c filename 当filename 存在并且是字符文件时返回真 -d pathname 当path ...
- 杂项:LDAP
ylbtech-杂项:LDAP 1.返回顶部 1. LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X. ...
- cookie和seesion区别
cookie 和session 的区别详解 这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie ...
- display:none 和 hidden 区别
- day02_12/12/2016_bean的实例化之构造器方式
- 334 Increasing Triplet Subsequence 递增的三元子序列
给定一个未排序的数组,请判断这个数组中是否存在长度为3的递增的子序列.正式的数学表达如下: 如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1, ...
- Java系列学习(六)-数组
1.方法: (1)定义: 完成特定功能块的代码,在有些语言中也叫函数 (2)格式: (3)方法的重载 [在同一个类中,方法名相同,参数列表不同,与返回值无关] 2.数组 (1)定义 存储同一种数据类型 ...
- 将电脑浏览器User-Agent识别改成手机浏览器UA几种简单方法
第一种方法:修改浏览器的快捷方式 右击桌面上的Chrome浏览器图标,在弹出的右键菜单中选择“复制”,复制一个图标副本到桌面.右击该副本,选择“属性”,打开相应的对话框,在“目标”文本框的字符后面添加 ...
- brew update失败提示:/System/Library/Frameworks/Ruby.framework/的解决方法
本文由@ray 出品,转载请注明出处. 文章链接:http://www.cnblogs.com/wolfray/p/8040701.html 想用brew安装wget,但是提示失败,然后想先 bre ...
- lnmp环境搭建后续-php安装
安装PHP7: 下载# wget http://PHP.net/get/php-7.0.2.tar.gz/from/a/mirror 建议安装之前先看看安装帮助文件INSTALL 解压安装 # tar ...