类似题目(一模一样):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 银行 ( 最大流)的更多相关文章

  1. 洛谷.4015.运输问题(SPFA费用流)

    题目链接 嗯..水题 洛谷这网络流二十四题的难度评价真神奇.. #include <queue> #include <cstdio> #include <cctype&g ...

  2. 洛谷P3381 最小费用最大流

    费用流板子 还是一道板子题..先练练手 #include <bits/stdc++.h> #define INF 0x3f3f3f3f #define full(a, b) memset( ...

  3. 洛谷P4015 运输问题(费用流)

    传送门 源点向仓库连费用$0$,流量为储量的边,商店向汇点连费用$0$,流量为需求的边,然后仓库向商店连流量$inf$,费用对应的边,跑个费用流即可 //minamoto #include<io ...

  4. 洛谷P4014 分配问题(费用流)

    传送门 可以把原图看做一个二分图,人在左边,任务在右边,求一个带权的最大和最小完美匹配 然而我并不会二分图做法,所以只好直接用费用流套进去,求一个最小费用最大流和最大费用最大流即可 //minamot ...

  5. 洛谷 - P4452 - 航班安排 - 费用流

    https://www.luogu.org/problemnew/show/P4452 又一道看题解的费用流. 注意时间也影响节点,像题解那样建边就少很多了. #include<bits/std ...

  6. 洛谷P3254 圆桌问题(最大流)

    题意 $m$个不同单位代表参加会议,第$i$个单位有$r_i$个人 $n$张餐桌,第$i$张可容纳$c_i$个代表就餐 同一个单位的代表需要在不同的餐桌就餐 问是否可行,要求输出方案 Sol 比较zz ...

  7. 洛谷P3381 最小费用最大流模板

    https://www.luogu.org/problem/P3381 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用 ...

  8. 洛谷.3254.圆桌问题(最大流ISAP)

    题目链接 日常水题 还是忍不住吐槽这题奇怪的评价 #include <cstdio> #include <cctype> #include <algorithm> ...

  9. 洛谷P4287 [SHOI2011]双倍回文(回文自动机)

    传送门 听说有大佬用manacher$O(n)$过此题……太强啦…… 说一下PAM的做法吧.(看了题解之后发现)蛮简单的 我们肯定要先建出回文自动机的 然后如果是枚举每一个节点暴跳fail指针肯定得T ...

随机推荐

  1. 操作表查询&操作表创建&操作表删除&操作表修改

    2.操作表 C(create):创建 语法: create table 表明( 列名1 数据类型1, 列名2 数据烈性2, .... 列名n 数据类型n ); create table Student ...

  2. Collection集合和Collection的常用功能

    boolean add(E e); 向集合里添加元素 boolean remove(E e); 删除集合中的某个元素 void clear(); 清空集合的所有元素 boolean contains( ...

  3. linux nginx启用php

    cd /usr/local/php/etc mv php-fpm.conf.default php-fpm.conf vi /usr/local/nginx/conf/nginx.conf # 删除如 ...

  4. Vue el与data的两种写法 && Object.defineProperty方法

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...

  5. 关于hive分区,你知道多少呢?

    ​ 文末查看关键字,回复赠书 一.理论基础 1.Hive分区背景 在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据,因此建表时引入 ...

  6. LuoguP2876 [USACO07JAN]解决问题Problem Solving (区间DP)(未完成)

    #include "Head.cpp" const int N = 307; int f[N][N], a[N], b[N], sumA[N], sumB[N]; int main ...

  7. CF580D Kefa and Dishes (状压DP)

    枚举最后食物 #include <iostream> #include <cstdio> #include <cstring> #include <algor ...

  8. 它把RabbitMQ的复杂全屏蔽了,我朋友用它后被老板一夜提拔为.NET架构师

    本文技术源自外企,并已在多个世界500强大型项目开发中运用. 本文适合有初/中级.NET知识的同学阅读.(支持.NET/.NET Framework/.NET Core) RabbitMQ作为一款主流 ...

  9. 一些有用的数学知识(Updating)

    文章目录 拉格朗日插值公式 微分中值定理 费马引理 拉格朗日中值定理 柯西中值定理 洛必达法则 连分数(NOI2021 D2T2 考点) 定义 结论 定理1 定理2 定理3 定理4 定理5 欧拉公式 ...

  10. 第八十七篇:Vue动态切换组件的展示和隐藏

    好家伙, 1.什么是动态组件? 动态组件指的是动态切换组件的限制与隐藏 2.如何实现动态组件渲染 vue提供了一个内置的<component>组件,专门用来实现动态组件的渲染. 可以将其看 ...