POJ-1698-网络流构图
题目大意:有一个人想去拍电影,有n部电影,每部电影有可以拍摄的时间和期限,问最后能否拍完所有电影;
题目解析:构图,超级源指向n部电影,每部电影指向可以拍摄的时间,容量为1,最后把所有的时间都指向超级汇;
AC代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<queue>
using namespace std;
const int inf=0x3fffffff;
const int maxn=410;
struct node
{ int to,cap,rev; node(int a,int b,int c) { to=a; cap=b; rev=c; }
};
vector<node>vec[maxn];
int pre[maxn],iter[maxn];
bool vis[maxn];
void add_edge(int from,int to,int cost)
{ vec[from].push_back(node(to,cost,vec[to].size())); vec[to].push_back(node(from,0,vec[from].size()-1));
}
void bfs(int s){ memset(pre,-1,sizeof(pre)); queue<int>que; pre[s]=0;que.push(s); while(!que.empty()){ int v=que.front();que.pop(); for(int i=0;i<vec[v].size();i++){ node &e=vec[v][i]; if(e.cap>0&&pre[e.to]<0){ pre[e.to]=pre[v]+1; que.push(e.to); } } }
}
int dfs(int v,int t,int f){ if(v==t) return f; for(int &i=iter[v];i<vec[v].size();i++){ node &e=vec[v][i]; if(e.cap>0&&pre[v]<pre[e.to]){ int d=dfs(e.to,t,min(f,e.cap)); if(d>0){ e.cap-=d; vec[e.to][e.rev].cap+=d; return d; } } } return 0;
}
int max_flow(int u,int v)
{ int flow=0; while(1) { bfs(u);if(pre[v]<0) return flow;memset(iter,0,sizeof(iter)); int f; while((f=dfs(u,v,inf))>0) flow+=f; }
}
int main()
{ int n,i,j,f,d,t,k,w,sum,a[10]; char str[1001];scanf("%d",&t);while(t--){memset(vis,0,sizeof(vis));sum=0;scanf("%d",&n);for(i=0;i<maxn;i++)vec[i].clear();for(i=1;i<=n;i++){for(j=1;j<=7;j++)scanf("%d",&a[j]);scanf("%d%d",&d,&w);sum+=d;add_edge(0,i,d);for(j=1;j<=7;j++){if(a[j]==0) continue;for(k=0;k<w;k++){add_edge(i,n+k*7+j,1);vis[n+7*k+j]=1;}}}for(i=0;i<maxn;i++){if(vis[i])add_edge(i,407,1);}if(max_flow(0,407)==sum)printf("Yes\n");else printf("No\n");}return 0;
}
POJ-1698-网络流构图相关推荐
- POJ - 1698 Alice's Chance(二分图多重匹配-网络流)
题目链接:点击查看 题目大意:爱丽丝要拍电影,现在有n部电影,每部电影都只能在每周特定的日期拍摄,并且需要拍摄d天,要在w周之内完成,现在问爱丽丝能否将所有的电影都拍摄完成 题目分析:因为每部电影可以 ...
- 【POJ - 1698】Alice's Chance(网络流最大流,建图)
题干: Alice, a charming girl, have been dreaming of being a movie star for long. Her chances will come ...
- [Poj 1459] 网络流(一) {基本概念与算法}
{ 凸包的内容还欠整理 先来侃侃一个月以前就想写写的网络流 本文介绍网络流 网络流的算法 及其应用 这些问题没事想想还是很有意思的 } ================================ ...
- poj 3469(网络流模版)
题目链接:http://poj.org/problem?id=3469 思路:终于把网络流的模版测试好了,在Dinic和Sap之间还是选择了Sap,事实证明Sap确实比Dinic效率高,在此贴出自己的 ...
- B - Dining POJ - 3281 -网络流拆点模板
B - Dining POJ - 3281 题意:一些牛,每只牛有 一些 想吃的food and milk,然后问最大能够满足多少只牛. 满足是指的这头牛即能吃到他喜欢吃的又能喝到他喜欢喝的 思路: ...
- poj 1698 Alice's Chance 最大流
题目:给出n部电影的可以在周几拍摄.总天数.期限,问能不能把n部电影接下来. 分析: 对于每部电影连上源点,流量为总天数. 对于每一天建立一个点,连上汇点,流量为为1. 对于每部电影,如果可以在该天拍 ...
- Dining POJ - 3281 (网络流)
传送门 题意:农夫约翰为他的N头牛准备了F种食物和D种饮料.每头牛都有各自喜欢的食物和饮料,而每种食物或饮料只能分配给一头牛.最多能有多少头牛同时得到自己喜欢的食物和饮料? 题解:如果只是分配食物的话 ...
- [NetworkFlow]网络流建模相关
流 网络流问题本质上是线性规划问题的应用之一,线性规划问题的标准形式是给出一组等式约束和不等式约束,要求最优化一个线性函数. 在流问题中,变量以流量的形式出现在问题中,我们给出一个流网络(以有向图的形 ...
- 【BZOJ】1070: [SCOI2007]修车
1070: [SCOI2007]修车 Description 同 一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需 ...
- UVALive 5903 Piece it together(二分图匹配)
给你一个n*m的矩阵,每个点为'B'或'W'或'.'.然后你有一种碎片.碎片可以旋转,问可否用这种碎片精确覆盖矩阵.N,M<=500 WB <==碎片 W 题目一看,感觉是精确覆盖(最近 ...
最新文章
- php file抓取不到内容,深入file_get_contents函数抓取内容失败的原因分析
- 在线CSS工具及相关资源收集
- mybatis mysql查询树形结构_MyBatis collection 集合嵌套查询树形节点
- C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它...
- linux挂载nfs权限不够,无法写入挂载点(nfs-server),获得“权限被拒绝”
- Unity安卓开发环境搭建
- 如何用OBS录制Mac系统声音
- Android移动开发的几种方式
- C语言中的绝对值函数
- python switch函数
- 大数据的关键技术(一)
- 贪心算法求解:王者荣耀购买点券最优策略
- java中获取一天的开始时间和结束时间
- 如何设计一个可扩展的优惠券功能
- cc许可_免费的公共领域和CC0许可图片的16个来源
- xml的三种解析方式
- STM32H750VBT6 DMA驱动TFT-LCD(ST7789V)
- Github每日精选(第75期):colly 爬取网站所有的数据
- 前端获取页面的高度/宽度
- 软件测试怎么投简历才会增加面试通过率?
热门文章
- 使用bootstarp前端组件集成的table 分页组件 ;简单上手使用实现前端分页功能
- VMware vSphere中三种磁盘规格(厚置备延迟置零\厚置备置零\Thin Provision(精简置备))的解释说明
- 定位服务的五大营销趋势
- js图片压缩后上传方法,图片超过1M先进行压缩,然后再上传
- html取消select下拉,取消下拉选项_jquery如何取消选择select下拉框
- 一个控制器怎么转发到另外一个控制器_【科普】整车控制器硬件篇
- softboy安卓软件
- woe分析_【SAS宏】使用WOE和IV实现风险因素筛选
- ppt转成wmv的VBS脚本
- PXE远程装机实验步骤小白易懂