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人的团 ...
随机推荐
- Linux环境下的Scala环境搭建
1.下载tag软件包后,我习惯放到software文件夹下,并建立app文件夹2.通过tar -zxvf scala-2.12.8.tgz -C ~/app/ 命令解压到app目录下(-C 是指定目录 ...
- AD原理图统一命名
1 Tools->Annotate Schematics 调出统一命名窗口 2 勾选要统一命名的原理图 3 Update Changes List 4 Accept Changes(creat ...
- springBoot集成Redis遇到的坑(择库)源码分析为什么择库失败
提示: springboot提供了一套链接redis的api,也就是个jar包,用到的连接类叫做LettuceConnectionConfiguration,所以我们引入pom时是这样的 <de ...
- Golang的session管理器
对于一些需要对用户进行管理(比如验证操作的权限等)的站点来说,session管理器是必不可少的.下面实现了一个线程安全的简单session管理类.生产环境:golang1.4.2+win7x64gol ...
- Basic Calculator 基本计算器
2018-09-27 22:02:36 一.Basic Calculator II 问题描述: 问题求解: sign用来保存前一个符号,用num来记录数字,如果碰到一个符号或者到达结尾,则需要进行入栈 ...
- top 内存mem的used很高,或者100%
top 内存mem的used很高,或者100% Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高 ...
- linux常用命令及系统常见符号
常用命令 1.start x 进入界面 2.shutdown -h now 立刻关机 shutdown -r now 立刻重新启动 reboot 立刻重新启动 3.su root 切换成超级管理员 4 ...
- pip3 install requests Cannot open D:\Python35\Scripts\pip3-script.py
1.问题描述: 使用pip(或pip3)指令安装模块时,出现了Cannot open D:\Python35\Scripts\pip3-script.py的报错信息 2.原因分析: pip安装出错 3 ...
- java.lang.RuntimeException: Unable to start activity ComponentInfo……AppCompat does not support the current theme features
Android测试时出现闪退的问题,出现了如下所示异常: java.lang.RuntimeException: Unable to start activity ComponentInfo{thon ...
- Post四种Content-Type
application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了.浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 app ...