poj 1698  Alice‘s Chance

题目地址: http://poj.org/problem?id=1698

题意: 演员Alice ,面对n场电影,每场电影拍摄持续w周,每周特定几天拍摄,每场电影需要Alice到场的天数为d。 请问Alice是否可以参与所有的电影拍摄。

最近在学习最大流的算法。

(1), 最大流真的是一种神奇的算法,最大的亮点是最大流的可回溯性,其可回溯性体现在反向边的提出。

(2), 最大流的应用也是非常灵活的,其中一个体现在如何构建流量网络,本题采用逆向思维, 0 作为出发点, 1,2,... n作为电影点,出发点与电影点之间的流量是每一场电影需要Alice去拍摄的天数的,n+1, n+2, ..... 7*tw+n 这部分代表的是所有天数的点。每一部电影都连接该电影拍摄特定的天数(流量为1), 最后所有的天数(n+1, n+2, ... 7*tw+n)汇集到终点 7*tw+n+1 , 如果这个点的最大流与顾客总天数一致,说明ok。

// 1698
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; const int INF = 2100000000;
const int maxn = 7*55 + 20 + 1 ; int n, mp[maxn][maxn], path[maxn], que[maxn*maxn]; int BFS(int src, int dest){
memset(path, -1, sizeof(path));
int cur, head = 0, tail = 0, minFlow = INF;
que[tail++] = src;
while(head < tail){
cur = que[head++];
if(cur == dest){
break;
}
for(int i=0; i<=dest; ++i){
if(path[i]==-1 && mp[cur][i]){
if(minFlow > mp[cur][i]){
minFlow = mp[cur][i];
}
path[i] = cur;
que[tail++] = i;
}
}
}
if(path[dest] == -1){
return -1;
}
return minFlow;
} int MaxFlow(int src, int dest){
int cur, pre, flow, maxFlow = 0;
while( (flow = BFS(src, dest)) != -1){
maxFlow += flow;
cur = dest;
while(cur != src){
pre = path[cur];
mp[pre][cur] -= flow;
mp[cur][pre] += flow;
cur = pre;
}
}
return maxFlow;
} int main(){
freopen("in.txt", "r", stdin); int test_num, d, w, sum, ans, tw=50, f[8];
scanf("%d", &test_num);
while(test_num--){
memset(mp, 0, sizeof(mp)); sum = 0;
scanf("%d", &n);
for(int j=1; j<=n; ++j){
for(int i=1; i<=7; ++i){
scanf("%d", &f[i]);
}
scanf("%d %d", &d, &w);
sum += d;
mp[0][j] += d;
for(int i=1; i<=7; ++i){
if(f[i] == 1){
for(int k=0; k<w; ++k){
mp[j][n + 7*k + i] += 1;
}
}
}
}
for(int j=n+1; j<=n+tw*7; ++j){
mp[j][n+tw*7+1] += 1;
}
ans = MaxFlow(0, n+tw*7+1);
if(ans == sum){
printf("Yes\n");
}else{
printf("No\n");
}
}
return 0;
}

  

poj 1698 Alice‘s Chance的更多相关文章

  1. POJ 1698 Alice's Chance

    题目:Alice 要拍电影,每一天只能参与一部电影的拍摄,每一部电影只能在 Wi 周之内的指定的日子拍摄,总共需要花 Di 天时间,求能否拍完所有电影. 典型的二分图多重匹配,这里用了最大流的 din ...

  2. 图论--网络流--最大流--POJ 1698 Alice's Chance

    Description Alice, a charming girl, have been dreaming of being a movie star for long. Her chances w ...

  3. poj 1698 Alice's Chance 最大流

    题目:给出n部电影的可以在周几拍摄.总天数.期限,问能不能把n部电影接下来. 分析: 对于每部电影连上源点,流量为总天数. 对于每一天建立一个点,连上汇点,流量为为1. 对于每部电影,如果可以在该天拍 ...

  4. POJ 1698 Alice&#39;s Chance(最大流+拆点)

    POJ 1698 Alice's Chance 题目链接 题意:拍n部电影.每部电影要在前w星期完毕,而且一周仅仅有一些天是能够拍的,每部电影有个须要的总时间,问能否拍完电影 思路:源点向每部电影连边 ...

  5. poj 1698 Alice&#39;s Chance 拆点最大流

    将星期拆点,符合条件的连边,最后统计汇点流量是否满即可了,注意结点编号. #include<cstdio> #include<cstring> #include<cmat ...

  6. Alice's Chance POJ - 1698(按时间点建边)

    Alice's Chance Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7791   Accepted: 3174 De ...

  7. 2018.07.06 POJ1698 Alice's Chance(最大流)

    Alice's Chance Time Limit: 1000MS Memory Limit: 10000K Description Alice, a charming girl, have been ...

  8. POJ 1698 最大流

    Alice's Chance Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7327   Accepted: 2992 De ...

  9. 【POJ 1698】Alice's Chance(二分图多重匹配)

    http://poj.org/problem?id=1698 电影和日子匹配,电影可以匹配多个日子. 最多有maxw*7个日子. 二分图多重匹配完,检查一下是否每个电影都匹配了要求的日子那么多. #i ...

随机推荐

  1. 使用 python 发送邮件

    1.使用python 写发邮箱代码: def sendmail (): import smtplib from email.mime.text import MIMEText from email.u ...

  2. 在Myeclipse中将maven程序部署到tomcat中

    用新版的m2e插件就可以了,而且发布后修改jsp是不需要重新发布的.MyEclipse10.6自带新版m2e,只需在Run Configuration的Maven Build中new一个输入confi ...

  3. BootStrap学习(2)

    使用Bootstrap添加代码框 可先看:简介.引入.包下载等:http://www.cnblogs.com/0201zcr/p/4900062.html Bootstrap 允许您以两种方式显示代码 ...

  4. html5移动端Meta设置

    1.   强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览. <meta name="viewport" content= ...

  5. Java报表工具FineReport常见的数据集报错错误代码和解释

    在使用finereport制作报表,若预览发生错误,很多朋友便手忙脚乱不知所措了,其实没什么,只要看懂报错代码和含义,可以很快的排除错误,这里我就分享一下finereport的数据集报错错误代码和解释 ...

  6. ubuntu14安装Qt

    首先下载Qt源码 https://download.qt.io/archive/qt/4.8/4.8.4/ 这里我下载的是qt-everywhere-opensource-src-4.8.4.tar. ...

  7. React Native 项目运行在 Web 浏览器上面

    React Native 的出现,让前端工程师拥有了使用 JavaScript 编写原生 APP 的能力.相比之前的 Web app 来说,对于性能和用户体验提升了非常多. 但是 React Nati ...

  8. Tstringlist分割字符串的用法?

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaText 2.Delimiter &Delim ...

  9. matlab FDR校正

    http://home.52brain.com/forum.php?mod=viewthread&tid=27066&page=1#pid170857 http://www.mathw ...

  10. 布局 - layout

    示例 <div id="cc" class="easyui-layout" style="width:600px;height:400px;&q ...