上下界最小费用流

限制点访问量->拆点[i,i']

建图:

1.s->S [m,m] 0

2.S->i [0,inf] 0 i'->t [0,inf] 0

3.i‘-j [0,inf] x

4.i->i'[vi,vi] 0

然后就是上下界流的常见套路啦

根据“调整”原则 先是每个点点权为di=ini-outi 然后>0的连源点 <0的连汇点

然后循环流原始源点和汇点连边 由于这个题每条限制边都是卡紧的所以不需要再往回跑一次

接下来就是喜闻乐见的dinic解决啦

//Love and Freedom.
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#define inf 20021225
#define ll long long
#define M 100010
#define N 210
using namespace std;struct edge{int to,lt,f,c,fm;}e[M<<1];
int in[N],cnt=1,S,t,ss,s,tt,from[N];
void add(int x,int y,int f,int c)
{e[++cnt].to=y;e[cnt].fm=x;e[cnt].lt=in[x];e[cnt].f=f;e[cnt].c=c;in[x]=cnt;e[++cnt].to=x;e[cnt].fm=y;e[cnt].lt=in[y];e[cnt].f=0;e[cnt].c=-c;in[y]=cnt;
}
queue<int> q; int dis[N]; bool vis[N];
bool spfa()
{while(!q.empty())    q.pop();memset(from,0,sizeof(from)); memset(vis,0,sizeof(vis));memset(dis,48,sizeof(dis)); dis[ss]=0; vis[ss]=1; q.push(ss);while(!q.empty()){int x=q.front(); q.pop();for(int i=in[x];i;i=e[i].lt){int y=e[i].to; if(e[i].f&&dis[y]>dis[x]+e[i].c){dis[y]=dis[x]+e[i].c; from[y]=i;if(!vis[y]) vis[y]=1,q.push(y);//if(y==tt)    return 1;
            }}vis[x]=0;}return dis[tt]!=dis[0];
}
int flow()
{int f=inf;for(int i=tt;i!=ss;i=e[from[i]].fm)    f=min(f,e[from[i]].f);for(int i=tt;i!=ss;i=e[from[i]].fm)    e[from[i]].f-=f,e[from[i]^1].f+=f;return dis[tt]*f;
}
int d[N],n,v[N]; int ans;
int main()
{int m;int x;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&v[i]);d[i]-=v[i]; d[i+n]+=v[i];}S=n<<1|1; s=S+1; t=s+1; ss=t+1; tt=ss+1;// tt=ss+1;d[s]-=m; d[S]+=m;for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++){scanf("%d",&x); if(x==-1)    continue;add(i+n,j,inf,x);}for(int i=1;i<=n;i++)    add(S,i,inf,0),add(i+n,t,inf,0);for(int i=1;i<=S;i++){if(d[i]>0)    add(ss,i,d[i],0);if(d[i]<0)    add(i,tt,-d[i],0);}add(t,s,inf,0); while(spfa())    ans+=flow();printf("%d\n",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/hanyuweining/p/10385838.html

BZOJ2055 80人环游世界相关推荐

  1. [bzoj2055]80人环游世界 上下界费用流

    2055: 80人环游世界 Time Limit: 10 Sec   Memory Limit: 64 MB [ Submit][ Status][ Discuss] Description 想必大家 ...

  2. [bzoj2055]80人环游世界[网络流,上下界网络流]

    手动画了整张图,,算是搞懂了吧,, 1 #include <bits/stdc++.h> 2 3 #define INF 0x3f3f3f3f 4 5 using namespace st ...

  3. BZOJ 2055: 80人环游世界 [上下界费用流]

    2055: 80人环游世界 题意:n个点带权图,选出m条路径,每个点经过val[i]次,求最小花费 建图比较简单 s拆点限制流量m 一个点拆成两个,限制流量val[i],需要用上下界 图中有边的连边, ...

  4. 2055: 80人环游世界

    2055: 80人环游世界 Time Limit: 10 Sec   Memory Limit: 64 MB Submit: 366   Solved: 232 [ Submit][ Status][ ...

  5. BZOJ 2055: 80人环游世界 有源汇上下界费用流

    2055: 80人环游世界 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 568  Solved: 347 [Submit][Status][Disc ...

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

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

  7. 搞事情 | 大数据文摘和ta的朋友们:环游世界的80天

    2017年 大数据文摘收获了 500+位新的志愿者, 7月份,我们在宇宙中心 举办了夏季狂欢Concert 在北京和超过200位真爱 面对面喝了一杯 2018年 文摘菌也想要对那些 分布在全球各地 毫 ...

  8. 为什么朋友圈总有些环游世界的人? 可能大部分是...

    转载公号: 差评 | 编辑: 猫咪 国庆放假7天, 刷朋友圈还挺有意思的.虽然宅在家里7天,不过却从朋友圈看到了整个世界的风景,你说厉害吧!比如下面几个: 可以了解到成都哪家蹄花好吃. 以及,足不出户 ...

  9. 朋友圈那些环游世界的人,可能只花了100块。。。

    点击上方"民工哥技术之路"选择"星标" 每天10点为你分享不一样的干货   本文经授权转自差评公众号,如需转载请联系官方授权. 大家一天会刷几次朋友圈? 小辣椒 ...

最新文章

  1. 运行Google CTemplate首页的例子遇到_CrtIsValidHeapPointer异常
  2. 机房系统(九)——【组合查询】
  3. asp.net MVC 应用程序的生命周期
  4. java 1.6 ubuntu_ubuntu配置 Java SE 1.6
  5. RabbitMQ保姆级教程
  6. bootstrape实战案例_bootstrap 实战入门教程(一)
  7. Maven(4)--- 构建生命周期
  8. ASP基础教程:数据库查询语言(2)
  9. 数据科学即将迎来“无代码”时代
  10. 如何下载vSphere Big Data Extensions 1.0免费试用版
  11. Java通过微信公众号获取地理位置信息
  12. 同济大学 线性代数 第六版 pdf_线性代数同济第六版第五章课后习题答案!
  13. Word无法插入页码怎么办?Word页码选项变灰,无法使用解决方法
  14. 在ie edge中消除默认出现的密码框小眼睛标志
  15. Python技法-序列拆分
  16. winform listbox控件简单使用。
  17. docker中konga的安装
  18. 《云计算网络珠玑》新书有奖试读活动
  19. SM8S36CA-汽车TVS瞬态抑制二极管
  20. 使用开源免费的shotcut 做视频编辑功能,和视频合并功能。感觉上和mac上面的imove 类似。开源项目星星比较多。

热门文章

  1. CAPI3 HTTP文件服务器搭建(共享目录版)
  2. 12月第1周.BIZ域名总量TOP10:仅中德澳3国持续上涨
  3. centos快速安装cacti
  4. 编写安全的ASP代码
  5. input type=file /,美化自定义上传按钮
  6. 聊聊redisson的DelayedQueue
  7. 20180517早课记录12-Hadoop
  8. Node.js核心入门(二)
  9. 企业级LNMP架构搭建实例(基于Centos6.x)
  10. c和c++中的const