BZOJ1001_狼抓兔子_KEY
由题意得是最小割问题,又由最大流最小割定理可得只需要求无向图的最大流即可。
建双向边,跑Dinic,EK会超时。
注意在DFS时要加"if(!res)dist[now]=0;"这句话,不然会超时。
这句话因为下次DFSnow这个点时得到的最小流量为0,所以就没必要DFS下去,一个剪枝。
code:
/**************************************************************
Problem: 1001
User: yekehe
Language: C++
Result: Accepted
Time:1916 ms
Memory:102480 kb
****************************************************************/ #include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; char tc()
{
static char fl[],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,,,stdin),A==B)?EOF:*A++;
} int read()
{
char c;while(c=tc(),(c<''||c>'')&&c!='-');
int x=,y=;c=='-'?y=-:x=c-'';
while(c=tc(),c>=''&&c<='')x=x*+c-'';
return x*y;
} const int MAXN=,MAXM=;
int N,M,ans;
struct edge{
int to,v;
}L[MAXM];
int head[MAXN],nxt[MAXM],cnt;
int l[MAXM],h,t,S,T,dist[MAXN]; void add(int x,int y,int fx,int fy,int c)
{
int u=(x-)*M+y,v=(fx-)*M+fy;
L[cnt]=(edge){v,c};
nxt[cnt]=head[u];
head[u]=cnt;
cnt++;
} bool BFS()
{
h=t=;
l[++t]=S;
memset(dist,,sizeof(dist));
dist[S]=;
while(h<t){
int front=l[++h];
for(int i=head[front];i!=-;i=nxt[i]){
int to=L[i].to;
if(!dist[to] && L[i].v){
dist[to]=dist[front]+;
l[++t]=to;
}
}
}
return dist[T];
} int DFS(int now,int x)
{
if(now==T)return x;
int res=;
for(int i=head[now];i!=- && x;i=nxt[i]){
int to=L[i].to;
if(dist[to]==dist[now]+ && L[i].v){
int fd=DFS(to,min(x,L[i].v));
x-=fd;L[i].v-=fd;
res+=fd;L[i^].v+=fd;
}
}
if(!res)dist[now]=;
return res;
} int main()
{
// freopen("x.txt","r",stdin);
N=read(),M=read();
memset(head,-,sizeof(head));
register int i,j;
int c;
for(i=;i<=N;i++)for(j=;j<M;j++)c=read(),add(i,j,i,j+,c),add(i,j+,i,j,c);
for(i=;i<N;i++)for(j=;j<=M;j++)c=read(),add(i,j,i+,j,c),add(i+,j,i,j,c);
for(i=;i<N;i++)for(j=;j<M;j++)c=read(),add(i,j,i+,j+,c),add(i+,j+,i,j,c);
S=,T=N*M;
while(BFS()){
ans+=DFS(S,2e9);
}
printf("%d",ans);
return ;
}
BZOJ1001_狼抓兔子_KEY的更多相关文章
- BZOJ 1001: [BeiJing2006]狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 20029 Solved: 4957[Submit][ ...
- BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 19528 Solved: 4818[Submit][ ...
- 【BZOJ1001】狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 7530 Solved: 1724[Submit][S ...
- BZOJ 1001 [BeiJing2006] 狼抓兔子(平面图最大流)
题目大意 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的.而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- BZOJ-1001 狼抓兔子 (最小割-最大流)平面图转对偶图+SPFA
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 14686 Solved: 3513 [Submit][ ...
- 【BZOJ】【1001】 【BJOI2006】狼抓兔子
平面图最小割->对偶图最短路 平面图最小割转对偶图最短路= = 想到了就比较好写了…… 可能是我对区域的标号方式比较奇特?反正我没有特判n==1||m==1也能过2333(机智吧-(滚开啦你个自 ...
- 【BZOJ】1001: [BeiJing2006]狼抓兔子 Dinic算法求解平面图对偶图-最小割
1001: [BeiJing2006]狼抓兔子 Description 左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下 三种类型的道路 1:(x,y)<==>( ...
- BZOJ_1001_狼抓兔子_(平面图求最小割+对偶图求最短路)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1001 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec ...
- BJOI2006狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 9967 Solved: 2267[Submit][S ...
随机推荐
- electricity meter就是电表
英式英语metre意思是度量衡里面的单位:米 美式英语拼为 meter 除了“米”,还有一个意思是“计量器”,比如 parking meter就是是路边停车投币计时器,cab meter就是出租车的计 ...
- Entity Framework: 主从表的增删改
1.根据主表添加从表数据 var dest = (from d in context.Destinations where d.Name == "Bali" select d).S ...
- python UI自动化实战记录四:测试页面1-pageobject
该部分记录测试页面1-IndexPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法, ...
- swift的clourse:字面量化的函数、将函数字面量化-与函数的类型签名相同
1.clourse的签名与函数的签名相同: 所以两者可以相互赋值: 2.可以将函数(表达式)字面量化: 因为可以字面量化,所以和其它的值(变量)没有任何区别,可以存在变量存在的任何地方: 3.clou ...
- BZOJ3196:二逼平衡树(线段树套Splay)
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在 ...
- BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡:贪心【最小匹配代价】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3399 题意: 给你一个数列a,和一个可变换顺序的序列b(数列长度≤25000). a增加一 ...
- HDU 6370 Werewolf 【并查集】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6370 Werewolf Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 2018 Multi-University Training Contest 3 Problem A. Ascending Rating 【单调队列优化】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6319 Problem A. Ascending Rating Time Limit: 10000/500 ...
- SpringBoot学习(三)IDEA
一.什么是JPA JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate.TopLink等. 二.Mysql数据库示例 1.在app ...
- MVC学习十四:MVC 路由 Route
一.MVC路由(Route)是什么? MVC路由(Route)可以理解规定用户访问网站方式的配置文件,就例如:我们在访问普通页面时http://xxxx/web/xx.aspx,但在MVC中我们的访问 ...