终于搞懂 上下界网络流了!

注意边的数量

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=1200;
const int INF=1000000000;
int tot=1,g[MAXN*10],num[MAXN*20],nnext[MAXN*20],flow[MAXN*20],cost[MAXN*20];
int n,k,s,t,ss,tt,s0,ans;
int d[MAXN],team[MAXN*40],head,tail;
int pre[MAXN],id[MAXN];
bool b[MAXN];
void add(int x,int y,int f,int c)
{tot++;nnext[tot]=g[x];g[x]=tot;num[tot]=y;cost[tot]=c;flow[tot]=f;
}
bool spfa()
{memset(d,100,sizeof(d));head=tail=0;d[ss]=0;team[++tail]=ss;while(head<tail){int x=team[++head];for(int i=g[x];i;i=nnext[i])if(flow[i]>0){int tmp=num[i];if(d[tmp]>d[x]+cost[i]){d[tmp]=d[x]+cost[i];pre[tmp]=x;id[tmp]=i;if(!b[tmp]) team[++tail]=tmp;}}}if(d[tt]==d[0]) return false;return true;
}
int main()
{scanf("%d %d",&n,&k);s=n*2+1,t=s+1;ss=t+1,tt=ss+1,s0=tt+1;add(s0,s,k,0);add(s,s0,0,0);add(t,s0,INF,0);add(s0,t,0,0);for(int i=1;i<=n;i++) {int x;scanf("%d",&x);add(s,i,1,x);add(i,s,0,-x);}for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++){int x;scanf("%d",&x);add(i+n,j,1,x);add(j,i+n,0,-x);}for(int i=1;i<=n;i++) add(i+n,t,1,0),add(t,i+n,0,0);for(int i=1;i<=n;i++) add(ss,i+n,1,0),add(i+n,ss,0,0);for(int i=1;i<=n;i++) add(i,tt,1,0),add(tt,i,0,0);while(spfa()){int tmp=tt;//cout<<tt<<' '<<ss<<endl;while(tmp!=ss){ans+=cost[id[tmp]];flow[id[tmp]]-=1;flow[id[tmp]^1]+=1;tmp=pre[tmp];}}cout<<ans<<endl;return 0;
}

bzoj 4108: [Wf2015]Catering|带上下界最小费用可行流相关推荐

  1. 有源汇上下界最小费用可行流 ---- P4553 80人环游世界(拆点 + 有源汇上下界最小费用可行流)

    题目链接 题目大意: 解题思路: 又是一道裸题 . 首先它要求第iii个点只经过ViViVi那么我们就拆点ai,ai+na_i,a_{i+n}ai​,ai+n​一个点为入点,一个为出点这条边的流量范围 ...

  2. 有源汇上下界最小费用可行流 ---- P4043 [AHOI2014/JSOI2014]支线剧情(模板)

    题目链接 题目大意: 解题思路: 有源汇上下界最小费用可行流模板题目来着 先建出一个有源汇上下界可行流的图,然后注意建图的时候要把每条边的下界的费用提前加到ans里面 然后再对图跑费用流,就是补齐费用 ...

  3. P4043 [AHOI2014/JSOI2014]支线剧情(有源汇上下界最小费用可行流)

    传送门 约束每个点至少要经过一次,因此是上下界网络流. 每经过边都需要相应的边权,且要求耗费边权之和最小,因此是最小费用流. 存在多个终点,需要建立汇点 ttt ,因此是有源汇网络流. 即:有源汇上下 ...

  4. CCF201812-5 管道清洁【无源汇上下界最小费用可行流】

    上下界费用流板子题,不赘述 感觉最重要的一个点 是题目要求回到一号点 我们这样的连边 恰好保证了要求 #include <bits/stdc++.h> using namespace st ...

  5. ZOJ2314 Reactor Cooling(无源汇流量有上下界网络的可行流)

    题目大概说一个核反应堆的冷却系统有n个结点,有m条单向的管子连接它们,管子内流量有上下界的要求,问能否使液体在整个系统中循环流动. 本质上就是求一个无源汇流量有上下界的容量网络的可行流,因为无源汇的容 ...

  6. 有下界的最小费用可行流2.0(bzoj 3876: [Ahoi2014]支线剧情)

    什么是有下界的最小费用可行流? 平时来讲都是最小费用最大流,也就是在满流的前提条件下费用尽可能的少,而最小费用可行流一般不要求满流,但是每条边都有最小流量要求(比如经过边e(u,v)的流量不能少于4等 ...

  7. 有上下限的最小费用可行流

    例题 BZOJ 3876 题意,有N个点,并且有一些边,每个点必须要经过一次,但是不限经过次数,也就是有下界的情况,且下界为1,现在每次的起点都是1,问至少花费的代价,使得每次从1开始,终点不限的情况 ...

  8. 洛谷 - P4043 [AHOI2014/JSOI2014]支线剧情(最小费用可行流)

    题目链接:点击查看 题目大意:给出一张 n 个点的有向图,每条边都有边权,现在要求将每条边至少遍历一遍,问最小的边权为多少 题目分析:建图时将每条边都设置流量为 [ 1 , inf ] ,就变成最小费 ...

  9. 【BZOJ4108】[Wf2015]Catering 有上下界费用流

    [BZOJ4108][Wf2015]Catering Description 有一家装备出租公司收到了按照时间顺序排列的n个请求. 这家公司有k个搬运工.每个搬运工可以搬着一套装备按时间顺序去满足一些 ...

最新文章

  1. 【Qt】启动QtCreator时报错:Cannot mix incompatible Qt library (version ) with this library (version...
  2. pytorch比较Tensor
  3. Java抽象类和接口
  4. opencart mail.php,如何修改OpenCart系统发信邮箱模板
  5. 堡垒机CrazyEye安装脚本
  6. 《.NET应用架构设计:原则、模式与实践》新书博客-2.1.1-设计原则简述
  7. PXC 57 二进制安装
  8. 暗黑破坏神3网站设计欣赏
  9. php字符串去重和去空,php去空格
  10. https spdy
  11. 积极心态,助力人生成功
  12. 在服务器上部署自己的h5页面用于微信内部浏览器打开
  13. Mysql日常巡检参考(持续更新)
  14. 如何免费低价获取一切资源?
  15. 小米10开始抓取日志怎么关闭_「教程」快来查查你的小米10是三星屏还是华星光电屏...
  16. 简易局域网视频服务器
  17. 测试员与程序员如何相处
  18. 微信红包开发设计思路
  19. 机器学习K均值聚类 python
  20. 佳木斯大学计算机专业宿舍,佳木斯大学宿舍条件,宿舍几人间环境好不好(图片)...

热门文章

  1. makefile脚本
  2. 宝塔面板Java项目一键部署项目404问题
  3. 机械硬盘的结构和工作原理
  4. 用计算机弹光阴的故事,光阴的故事-罗大佑-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...
  5. Android版本的”Wannacry”文件加密病毒样本分析(附带锁机)
  6. NYOJ6 之喷水装置(一)
  7. QPixmap加载图片失败,有可能是图片太大
  8. 三菱Q系列plc,11轴标准程序,包含轴回零,相对定位,绝对定位,程序有两轴直线插补
  9. Opencv图像的亮度和对比度调整
  10. Linux 定时重启某个服务