bzoj2055
题解:
似乎是放在费用流里的
然而是有上下界的网络流QAQ
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=;
int n,m,x,mincost,s,t,S,ss,tt,tot,fi[N],ne[N],zz[N],sl[N],c[N];
int dis[N],last[N],d[N],vis[N];
queue <int> q;
void jb(int x,int y,int cap,int z)
{
ne[++tot]=fi[x];
fi[x]=tot;
zz[tot]=y;
sl[tot]=cap;
c[tot]=z;
ne[++tot]=fi[y];
fi[y]=tot;
zz[tot]=x;
sl[tot]=;
c[tot]=-z;
}
int addflow(int s,int t)
{
int now=t,ans=1e9;
while (now!=s)
{
ans=min(ans,sl[last[now]]);
now=zz[last[now]^];
}
now=t;
while (now!=s)
{
sl[last[now]]-=ans;
sl[last[now]^]+=ans;
now=zz[last[now]^];
}
return ans;
}
int spfa(int s,int t)
{
memset(dis,,sizeof(dis));
dis[s]=;
memset(vis,,sizeof(vis));
vis[s]=;
while (!q.empty())q.pop();
q.push(s);
while (!q.empty())
{
int now=q.front();q.pop();
vis[now]=;
for (int i=fi[now];i!=-;i=ne[i])
if (dis[zz[i]]>dis[now]+c[i]&&sl[i])
{
dis[zz[i]]=dis[now]+c[i];
last[zz[i]]=i;
if (!vis[zz[i]])
{
vis[zz[i]]=;
q.push(zz[i]);
}
}
}
if (dis[t]>1e9) return ;
int flow=addflow(s,t);
mincost+=flow*dis[t];
return ;
}
int main()
{
tot=-;
memset(fi,-,sizeof(fi));
scanf("%d%d",&n,&m);
S=n+n+,s=S+,t=s+;ss=t+,tt=ss+;
d[s]-=m,d[S]+=m;
for (int i=;i<=n;i++)
{
scanf("%d",&x);
jb(S,i,1e9,);
jb(n+i,t,1e9,);
d[i]-=x,d[n+i]+=x;
}
for (int i=;i<n;i++)
for (int j=i+;j<=n;j++)
{
scanf("%d",&x);
if (x==-) continue;
jb(n+i,j,1e9,x);
}
for (int i=;i<=t;i++)
{
if (d[i]>)jb(ss,i,d[i],);
if (d[i]<)jb(i,tt,-d[i],);
}
jb(t,s,1e9,);
while (spfa(ss,tt));
printf("%d\n",mincost);
}
bzoj2055的更多相关文章
- 【BZOJ2055】80人环游世界 有上下界费用流
[BZOJ2055]80人环游世界 Description 想必大家都看过成龙大哥的<80天环游世界>,里面的紧张刺激的打斗场面一定给你留下了深刻的印象.现在就有这么 一个 ...
- 【BZOJ-2055】80人环游世界 上下界费用流 (无源无汇最小费用最大流)
2055: 80人环游世界 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 321 Solved: 201[Submit][Status][Discus ...
- BZOJ2055: 80人环游世界
题解: 总算A掉了,各种蛋疼... int main() { freopen("input.txt","r",stdin); freopen("out ...
- [BZOJ2055]80人环游世界 有上下界最小费用最大流
2055: 80人环游世界 Time Limit: 10 Sec Memory Limit: 64 MB Description 想必大家都看过成龙大哥的<80天环游世界>,里面 ...
- bzoj千题计划159:bzoj2055: 80人环游世界(有源汇上下界可行最小费用流)
http://www.lydsy.com/JudgeOnline/problem.php?id=2055 某个国家必须经过vi次, 可以转化为上下界都为vi的边 对这张图做有源汇上下界可行最小费用流 ...
- BZOJ2055 80人环游世界 网络流 费用流 有源汇有上下界的费用流
https://darkbzoj.cf/problem/2055 https://blog.csdn.net/Clove_unique/article/details/54864211 ←对有上下界费 ...
- [BZOJ2055] 80人环游世世界
Description 想必大家都看过成龙大哥的<80天环游世界>,里面的紧张刺激的打斗场面一定给你留下了深刻的印象.现在就有这么 一个80人的团伙,也想来一次环游世界. 他们 ...
- bzoj2055: 80人环游世界(可行流)
传送门 表示完全看不懂最小费用可行流…… 据某大佬说 我们考虑拆点,然后进行如下连边 $s$向$a_i$连边,权值$0$,容量$[0,m]$ $a_i$向$a_i'$连边,权值$0$容量$[v_i,v ...
- 【上下界网络流 费用流】bzoj2055: 80人环游世界
EK费用流居然写错了…… Description 想必大家都看过成龙大哥的<80天环游世界>,里面的紧张刺激的打斗场面一定给你留下了深刻的印象.现在就有这么 一个80人的团 ...
随机推荐
- echart 圆滑初始化化
圆滑:主题下载对应主题js引入后注入对应名称参数方可使用主题 初始化:tab点击的时候初始化图表涉及到tab切换到的需要延迟加载否则默认宽度为100px 1.创建macarons.js文件 2.页面添 ...
- Apollo快速安装视频教程
参见视频 https://www.csdn.net/article/a/2018-05-14/15948340
- spring cloud: zuul(三): ribbon负载均衡配置
zuul的routes配置下path/url组合不支持负载均衡 下面介绍zuul的routes配置下的path/serviceId负载均衡配置 spring-boot-user微服务开启了:7901, ...
- 安卓中使用HttpURLConnection连接网络简单示例 --Android网络编程
MainActivity.java: package thonlon.example.cn.httpurlconnectionpro; import android.os.Bundle;import ...
- Confluence 6 删除和归档空间
我们希望你已经成功的完成了这个任务,同时还学习到了一些有关 Confluence 空间的多样性和强大的功能.后推到 18 个月以后,我们来看看你的火星移民计划进行的怎么样了. 如果你希望删除老的空间( ...
- logstash配置文件
1. 安装 logstash 安装过程很简单,直接参照官方文档: https://www.elastic.co/guide/en/logstash/current/installing-logsta ...
- Docker 镜像上传到docker hub仓库
1 先创建docker hub 帐号 ,并创建仓库 https://hub.docker.com/ 首先你需要一个docker hub 帐号,记住username,password,email .后面 ...
- docker-compose 在线安装升级
参考:https://docs.docker.com/compose/install/ curl -L "https://github.com/docker/compose/releases ...
- Redis与memchache对比
Redis是NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括string.list.se ...
- 网络编程socketserver实现并发
import socketserver import struct import json import os class FtpServer(socketserver.BaseRequestHand ...