bzoj 4439: [Swerc2015]Landscaping -- 最小割
4439: [Swerc2015]Landscaping
Time Limit: 2 Sec Memory Limit: 512 MB
Description
Input
Output
1<=A,B<=100000
Sample Input
...#
#..#
...#
##..
###.
Sample Output
样例解释:
把(2,1)的高地变成低地花费2000,燃料花费9000
HINT
我们以源点向高处,低处向汇点连权值为 B 的边,在相邻的点连权值为 A 的边,然后跑最小割
#include<map>
#include<cmath>
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
#define N 100010
int n,m,S,T;
inline int pos(int i,int j){return (i-)*m+j;}
char str[];
int lj[N],to[N],v[N],fro[N],cnt=;
void add(int a,int b,int c){fro[++cnt]=lj[a];to[cnt]=b;v[cnt]=c;lj[a]=cnt;}
void ins(int a,int b,int c){add(a,b,c);add(b,a,);}
int q[N],dis[N],l,r;
bool bfs()
{
int x;l=;r=;
memset(dis,,sizeof(dis));
dis[S]=;q[]=S;
while(l!=r)
{
x=q[l++];if(l==N) l=;
for(int i=lj[x];i;i=fro[i])
{
if(v[i]&&!dis[to[i]])
{
dis[to[i]]=dis[x]+;
if(to[i]==T) return ;
q[r++]=to[i];if(r==N) r=;
}
}
}
return ;
}
int dfs(int x,int p)
{
if(x==T) return p;
int tp,res=;
for(int i=lj[x];i;i=fro[i])
{
if(v[i]&&dis[to[i]]==dis[x]+)
{
tp=dfs(to[i],min(p-res,v[i]));
v[i]-=tp;v[i^]+=tp;
res+=tp;
if(res==p) return p;
}
}
if(res==) dis[x]=;
return res;
}
int a,b,ans;
int main()
{
scanf("%d%d%d%d",&n,&m,&a,&b);
S=;T=n*m+;
for(int i=;i<=n;i++)
{
scanf("%s",str+);
for(int j=;j<=m;j++)
{
if(str[j]=='#') ins(S,pos(i,j),b);
else ins(pos(i,j),T,b);
}
}
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(i>) ins(pos(i,j),pos(i-,j),a);
if(i<n) ins(pos(i,j),pos(i+,j),a);
if(j>) ins(pos(i,j),pos(i,j-),a);
if(j<m) ins(pos(i,j),pos(i,j+),a);
}
}
while(bfs()) ans+=dfs(S,0x3f3f3f3f);
printf("%d\n",ans);
return ;
}
bzoj 4439: [Swerc2015]Landscaping -- 最小割的更多相关文章
- 【BZOJ4439】[Swerc2015]Landscaping 最小割
[BZOJ4439][Swerc2015]Landscaping Description FJ有一块N*M的矩形田地,有两种地形高地(用‘#’表示)和低地(用‘.’表示) FJ需要对每一行田地从左到右 ...
- BZOJ_4439_[Swerc2015]Landscaping_最小割
BZOJ_4439_[Swerc2015]Landscaping_最小割 Description FJ有一块N*M的矩形田地,有两种地形高地(用‘#’表示)和低地(用‘.’表示) FJ需要对每一行田地 ...
- [BZOJ 2127] happiness 【最小割】
题目链接:BZOJ - 2127 题目分析 首先,每个人要么学文科,要么学理科,所以可以想到是一个最小割模型. 我们就确定一个人如果和 S 相连就是学文,如果和 T 相连就是学理. 那么我们再来确定建 ...
- BZOJ.3532.[SDOI2014]LIS(最小割ISAP 退流)
BZOJ 洛谷 \(LIS\)..经典模型? 令\(f_i\)表示以\(i\)结尾的\(LIS\)长度. 如果\(f_i=1\),连边\((S,i,INF)\):如果\(f_i=\max\limits ...
- BZOJ 2561 最小生成树 | 网络流 最小割
链接 BZOJ 2561 题解 用Kruskal算法的思路来考虑,边(u, v, L)可能出现在最小生成树上,就是说对于所有边权小于L的边,u和v不能连通,即求最小割: 对于最大生成树的情况也一样.容 ...
- bzoj 1497 最大获利 - 最小割
新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研 ...
- BZOJ 1391: [Ceoi2008]order [最小割]
1391: [Ceoi2008]order Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1509 Solved: 460[Submit][Statu ...
- BZOJ 1797: [Ahoi2009]Mincut 最小割
1797: [Ahoi2009]Mincut 最小割 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2076 Solved: 885[Submit] ...
- BZOJ 3144 切糕(最小割)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3144 题意: 思路:我们假设没有那个D的限制.这样就简 单了.贪心的话,我们只要在每一个 ...
随机推荐
- spark作业提交参数设置(转)
来源:https://www.cnblogs.com/arachis/p/spark_parameters.html 摘要 1.num-executors 2.executor-memory 3.ex ...
- 一文掌握关于Java数据结构所有知识点(欢迎一起完善)
在我们学习Java的时候,很多人会面临我不知道继续学什么或者面试会问什么的尴尬情况(我本人之前就很迷茫).所以,我决定通过这个开源平台来帮助一些有需要的人,通过下面的内容,你会掌握系统的Java学习以 ...
- python并发编程之进程、线程、协程的调度原理(六)
进程.线程和协程的调度和运行原理总结. 系列文章 python并发编程之threading线程(一) python并发编程之multiprocessing进程(二) python并发编程之asynci ...
- linux下C语言实现的内存池【转】
转自:http://blog.chinaunix.net/uid-28458801-id-4254501.html 操作系统:ubuntu10.04 前言: 在通信过程中,无法知道将会接收到的 ...
- MySQL数据库的“十宗罪”【转】
今天就给大家列举 MySQL 数据库中最经典的十大错误案例,并附有处理问题的解决思路和方法.希望能给刚入行或数据库爱好者一些帮助,今后再遇到任何报错,我们都可以很淡定地去处理.学习任何一门技术的同时, ...
- Petrozavodsk Summer Training Camp 2017
Petrozavodsk Summer Training Camp 2017 Problem A. Connectivity 题目描述:有\(n\)个点,现不断地加边.每条边有一种颜色,如果一个点对\ ...
- Apache虚拟主机配置(多个域名访问多个目录)(转)
Apache虚拟主机配置(多个域名访问多个目录) 为了方便管理虚拟主机,我决定使用一种方法,那就是修改httpd-vhosts.conf文件. 第一步首先要使扩展文件httpd-vhosts.conf ...
- ssh使两台机器建立连接
ssh利用口令建立连接过程: 客户端--> 发送连接请求 --> 远程主机 --> 返回远程主机的公钥 --> 公钥加密客户端私钥+客户端公钥返回远程主机 --> 远程主 ...
- Java访问http用户验证
public class SAXParse { static final String kuser = "admin"; static final String kpass = & ...
- Jinja2 及 render_template 的深度用法
是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符 ...