洛谷P4638 SHOI2011 银行 ( 最大流)
类似题目(一模一样):http://poj.org/problem?id=1149
我这里以poj1149的PIGS为例,
新建源点s和汇点t,n个顾客作为中间的点,,对于每个顾客,他可以解锁一定的猪圈,枚举这些猪圈,如果当前枚举的猪圈是第一次解锁,由s向该顾客连边,容量为初始时该猪圈中猪的数量;如果猪圈在之前就被解锁了,由最先解锁它的顾客向当前顾客连边,容量为正无穷(因为管理员可以重新分配解锁的猪圈中猪的数量)。最后由每个顾客向汇点连边,容量就是该顾客想买的数量。
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int INF=0x3f3f3f3f;
4 const int N=610,M=4e6+10;
5 int m,n,s,t,d[N],pre[2510];
6 int head[N],tot=-1,nxt[M],to[M],cap[M],k[2510];
7 //tot=-1***********
8 bool bfs(){
9 memset(d,0,sizeof(d));
10 d[s]=1;
11 queue<int> q;
12 q.push(s);
13 while(!q.empty()){
14 int u=q.front();q.pop();
15 for(int i=head[u];~i;i=nxt[i]){
16 int v=to[i];
17 if(!d[v]&&cap[i]){
18 d[v]=d[u]+1;
19 if(v==t) return true;
20 q.push(v);
21 }
22 }
23 }
24 return false;
25 }
26
27 int dfs(int x,int flow){
28 if(x==t) return flow;
29 int rest=flow;
30 for(int i=head[x];~i&&rest;i=nxt[i]){
31 int v=to[i];
32 if(d[v]==d[x]+1&&cap[i]){
33 int t=dfs(v,min(cap[i],rest));
34 if(!t) d[v]=0;
35 cap[i]-=t;
36 cap[i^1]+=t;
37 rest-=t;
38 }
39 }
40 return flow-rest;
41 }
42
43 int dinic(){
44 int maxflow=0;
45 while(bfs()) maxflow+=dfs(s,INF);
46 return maxflow;
47 }
48
49 void add(int x,int y,int z){
50 nxt[++tot]=head[x];
51 head[x]=tot;
52 to[tot]=y;
53 cap[tot]=z;
54 }
55
56 int main(){
57 int a,b,x;
58 cin>>m>>n;
59 s=0;t=n+1;
60 memset(pre,-1,sizeof(pre));
61 memset(head,-1,sizeof(head));
62 for(int i=1;i<=m;i++) cin>>k[i];
63 for(int i=1;i<=n;i++){
64 cin>>a;
65 while(a--){
66 cin>>x;
67 if(pre[x]==-1){
68 add(s,i,k[x]);
69 add(i,s,0);
70 }
71 else{
72 add(pre[x],i,INF);
73 add(i,pre[x],0);
74 }
75 pre[x]=i;
76 }
77 cin>>b;
78 add(i,t,b);
79 add(t,i,0);
80 }
81 cout<<dinic();
82 return 0;
83 }
建好图后套最大流模板就行了(要把模板理解透彻啊,不要像我,成功建好图后套模板出了问题,调试了好久......)
洛谷P4638 SHOI2011 银行 ( 最大流)的更多相关文章
- 洛谷.4015.运输问题(SPFA费用流)
题目链接 嗯..水题 洛谷这网络流二十四题的难度评价真神奇.. #include <queue> #include <cstdio> #include <cctype&g ...
- 洛谷P3381 最小费用最大流
费用流板子 还是一道板子题..先练练手 #include <bits/stdc++.h> #define INF 0x3f3f3f3f #define full(a, b) memset( ...
- 洛谷P4015 运输问题(费用流)
传送门 源点向仓库连费用$0$,流量为储量的边,商店向汇点连费用$0$,流量为需求的边,然后仓库向商店连流量$inf$,费用对应的边,跑个费用流即可 //minamoto #include<io ...
- 洛谷P4014 分配问题(费用流)
传送门 可以把原图看做一个二分图,人在左边,任务在右边,求一个带权的最大和最小完美匹配 然而我并不会二分图做法,所以只好直接用费用流套进去,求一个最小费用最大流和最大费用最大流即可 //minamot ...
- 洛谷 - P4452 - 航班安排 - 费用流
https://www.luogu.org/problemnew/show/P4452 又一道看题解的费用流. 注意时间也影响节点,像题解那样建边就少很多了. #include<bits/std ...
- 洛谷P3254 圆桌问题(最大流)
题意 $m$个不同单位代表参加会议,第$i$个单位有$r_i$个人 $n$张餐桌,第$i$张可容纳$c_i$个代表就餐 同一个单位的代表需要在不同的餐桌就餐 问是否可行,要求输出方案 Sol 比较zz ...
- 洛谷P3381 最小费用最大流模板
https://www.luogu.org/problem/P3381 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用 ...
- 洛谷.3254.圆桌问题(最大流ISAP)
题目链接 日常水题 还是忍不住吐槽这题奇怪的评价 #include <cstdio> #include <cctype> #include <algorithm> ...
- 洛谷P4287 [SHOI2011]双倍回文(回文自动机)
传送门 听说有大佬用manacher$O(n)$过此题……太强啦…… 说一下PAM的做法吧.(看了题解之后发现)蛮简单的 我们肯定要先建出回文自动机的 然后如果是枚举每一个节点暴跳fail指针肯定得T ...
随机推荐
- Graph Theory の brief introduction
一. 图的概念 1.定义 某类具体事物(顶点)和这些事物之间的联系(边),由顶点(vertex)和边(edge)组成, 顶点的集合V,边的集合E,图记为G = (V,E) 2.分类 1 ...
- Redis常见数据类型
String 常用命令: get.set.incr.decr mget等操作,普通的key/value存储都可以归为此类 Hash 常用命令: hget,hset,hgetall 等. List(队列 ...
- http、https和Cookie
http和https http,https 都是网络传输协议 是用于网络相关传输,http走的是明文传输,https走的密文传输(内部采用对称加密以及非对称加密).对应的https安全性要高于http ...
- LuoguP1922 女仆咖啡厅桌游吧 (树形动态规划)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- Redis 12 持久化
参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 概述 Redi ...
- Elasticsearch-Kibana-学习笔记
1.背景 1.1 简介 Elasticsearch 是一个分布式.高扩展.高实时的搜索与数据分析引擎.它能很方便的使大量数据具有搜索.分析和探索的能力.充分利用Elasticsearch的水平伸缩性, ...
- ceph 007 双向池同步 rgw对象网关配置 s3对象存储
增量导入导出要基于快照 导出的过程当中害怕镜像被修改所以打快照.快照的数据是不会变化的 镜像级别的双向同步 镜像主到备,备到主.一对一 就算是池模式的双向同步,镜像也具有主备关系 双向同步,池模式 [ ...
- Vue3中插槽(slot)用法汇总
Vue中的插槽相信使用过Vue的小伙伴或多或少的都用过,但是你是否了解它全部用法呢?本篇文章就为大家带来Vue3中插槽的全部用法来帮助大家查漏补缺. 什么是插槽 简单来说就是子组件中的提供给父组件使用 ...
- 国家都给NISP证书的补贴了!关于NISP考试的政策有哪些?
NISP证书由中国信息安全测评中心依据中编办赋予"信息安全服务和信息安全专业人员的能力评估与资质审核"的职能而推出的证书,是中国信息安全测评中心代表国家实施的信息安全人员能力评定证 ...
- 有意思的方向裁切 overflow: clip
本文将介绍一个新特性,从 Chrome 90 开始,overflow 新增的一个新特性 -- overflow: clip,使用它,轻松的对溢出方向进行控制. overflow: clip 为何 首先 ...