1001: [BeiJing2006]狼抓兔子

Time Limit: 15 Sec Memory Limit: 162 MB

Submit: 12719 Solved: 3017

[Submit][Status][Discuss]

Description

如今小朋友们最喜欢的”喜羊羊与灰太狼”,话说灰太狼抓羊不到,但抓兔子还是比較在行的,并且如今的兔子还比較笨,它们仅仅有两个窝,如今你做为狼王,面对以下这样一个网格的地形:

左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下三种类型的道路 1:(x,y)<==>(x+1,y) 2:(x,y)<==>(x,y+1) 3:(x,y)<==>(x+1,y+1) 道路上的权值表示这条路上最多可以通过的兔子数。道路是无向的. 左上角和右下角为兔子的两个窝,開始时全部的兔子都聚集在左上角(1,1)的窝里。如今它们要跑到右下解(N,M)的窝中去。狼王開始伏击这些兔子.当然为了保险起见,假设一条道路上最多通过的兔子数为K,狼王须要安排相同数量的K仅仅狼。才干全然封锁这条道路,你须要帮助狼王安排一个伏击方案,使得在将兔子一网打尽的前提下。參与的狼的数量要最小。由于狼还要去找喜羊羊麻烦.

Input

第一行为N,M.表示网格的大小,N,M均小于等于1000.接下来分三部分第一部分共N行,每行M-1个数,表示横向道路的权值. 第二部分共N-1行,每行M个数,表示纵向道路的权值. 第三部分共N-1行,每行M-1个数。表示斜向道路的权值. 输入文件保证不超过10M

Output

输出一个整数。表示參与伏击的狼的最小数量.

Sample Input

3 4

5 6 4

4 3 1

7 5 3

5 6 7 8

8 7 6 5

5 5 5

6 6 6

Sample Output

14

HINT

看着论文学了一下平面图和对偶图

url=1oA7Svl0XEyQmqJgAjE1HKIEUKbqHaoi8qybJYLef5Z646hXs2AETmTQRwfkFBnN4dhouxiwc2YhAQTZSrgWaQqNP-RnhoM7VDdsFz92ziq">《两极相通—浅析最大最小定理在信息学竞赛中的应用》

事实上就是将这个平面图转化成一个对偶图,在这个对偶图上求最短路的长度,就是原来平面图的最小割。

#include<iostream>
#include<cstdio>
#include<cstring>
#define T n*(m-1)+(n-1)*m+(n-1)*(m-1)-n*m+3
using namespace std;
const int N=2001000;
int n,m,point[N],next[N*3],tot=1,ans,dis[N],l[10000000];
struct S{
int st,en,va;
}aa[N*3];
bool f[N];
inline void add(int x,int y,int z)
{
tot+=1,next[tot]=point[x];point[x]=tot;
aa[tot].st=x;aa[tot].en=y;aa[tot].va=z;
tot+=1,next[tot]=point[y];point[y]=tot;
aa[tot].st=y;aa[tot].en=x;aa[tot].va=z;
}
inline int SPFA(int x,int y)
{
int h=1,t=1,u,i;
memset(dis,127/3,sizeof(dis));
memset(f,1,sizeof(f));
l[h]=x;dis[x]=0;
while(h<=t){
u=l[h];
f[u]=true;
for(i=point[u];i;i=next[i])
if(dis[aa[i].en]>dis[u]+aa[i].va){
dis[aa[i].en]=dis[u]+aa[i].va;
if(f[aa[i].en]){
f[aa[i].en]=false;
t+=1;
l[t]=aa[i].en;
}
}
h+=1;
}
return dis[y];
}
int main()
{
int i,j,x,y,z;
scanf("%d%d",&n,&m);
ans=210000000;
for(i=1;i<=n;++i)
for(j=1;j<m;++j){
scanf("%d",&x);
if(n==1) ans=min(ans,x);
if(i==1) add(1,j*2+1,x);
else if(i==n) add((i-2)*(m-1)*2+j*2,T,x);
else add((i-2)*(m-1)*2+j*2,(i-1)*(m-1)*2+j*2+1,x);
}
for(i=1;i<n;++i)
for(j=1;j<=m;++j){
scanf("%d",&x);
if(m==1) ans=min(ans,x);
if(j==1) add((i-1)*(m-1)*2+2,T,x);
else if(j==m) add(1,i*(m-1)*2+1,x);
else add((i-1)*(m-1)*2+(j-1)*2+1,(i-1)*(m-1)*2+j*2,x);
}
for(i=1;i<n;++i)
for(j=1;j<m;++j){
scanf("%d",&x);
add((i-1)*(m-1)*2+j*2,(i-1)*(m-1)*2+j*2+1,x);
}
if(n==1&&m==1) ans=0;
if(n==1||m==1) printf("%d\n",ans);
else printf("%d\n",SPFA(1,T));
}

【bzoj1001】【狼抓兔子】的更多相关文章

  1. bzoj1001狼抓兔子 对偶图优化

    bzoj1001狼抓兔子 对偶图优化 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路 菜鸡总是要填坑的! 很明显让你求网格图的最 ...

  2. BZOJ-1001 狼抓兔子 (最小割-最大流)平面图转对偶图+SPFA

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 14686 Solved: 3513 [Submit][ ...

  3. bzoj1001狼抓兔子

    1001: [BeiJing2006]狼抓兔子 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你 ...

  4. BZOJ1001:狼抓兔子(最小割最大流+vector模板)

    1001: [BeiJing2006]狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨, ...

  5. BZOJ1001 狼抓兔子(裸网络流)

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  6. 【建图+最短路】Bzoj1001 狼抓兔子

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个 ...

  7. BZOJ1001 狼抓兔子 平面图转对偶图 最小割

    现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为 ...

  8. 最大流最小割——bzoj1001狼抓兔子,洛谷P2598

    前置知识 平面图 平面图就是平面上任意边都不相交的图.(自己瞎画的不算XD) 对偶图 比如说这个图,我们发现平面图肯定会把平面分成不同的区域(感觉像拓扑图),并把这些区域当做每个点(不被包围的区域独自 ...

  9. BZOJ1001 狼抓兔子

    最小割 代码 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) m ...

  10. [BJOI2006][bzoj1001] 狼抓兔子 [最小割]

    题面: 传送门 思路: 其实就是一道最小割的题目...... 我的写法加了两个优化,常数比较小,所以过掉了 一个是当前弧,一个是若当前点并不能流出去,那么标记dep为-1 听说正解是对偶图最短路?可以 ...

随机推荐

  1. Android PopWindow的替代品BasePopup

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/109 背景描述 最近一段时间,又看到了这个开源项目Base ...

  2. BootStrap 资源包的下载和使用

    将附件中的包解压,放置webroot中,并在jsp页面中引用它们,即可以使用 bootstrap.rar (78.9 KB) 下载次数: 0

  3. Asp.net MVC4 Step By Step(5)-使用Web API

    Web API是ASP.net MVC4新增的一个特色, 应用于处理Ajax请求, 他同时使用了Web标准规范, 比如Http, Json,和XML,以及一系列构建REST数据服务的参考原则, 和AS ...

  4. HTTPS 为什么更安全,先看这些

    HTTPS 是建立在密码学基础之上的一种安全通信协议,严格来说是基于 HTTP 协议和 SSL/TLS 的组合.理解 HTTPS 之前有必要弄清楚一些密码学的相关基础概念,比如:明文.密文.密码.密钥 ...

  5. Leetcode0019--Remove Nth Node From End of List 移除链表第N个结点

    [转载请注明]http://www.cnblogs.com/igoslly/p/8672656.html 看一下题目: Given a linked list, remove the nth node ...

  6. Project Management -- How to use GitHub with Git

    如何通过Git使用GitHub ——PM曾子轩 从未使用过Git 一.从官网下载Git 此部分略 二.用Git连接上GitHub(为保持完整性,此部分引用博客:https://www.cnblogs. ...

  7. selenium选错弹出层的下拉框

    要先选中这个弹出层的form元素,再找下拉框 public void downSelectBox(){ driver.get("https://www.imooc.com/user/setp ...

  8. 用Python+selenium打开IE浏览器和Chrome浏览器的问题

    这几天在学Python+selenium自动化,对三大浏览器Firefox,Chrome和IE都做了尝试,也都分别下载了对应的webdriver,如:geckodriver.chromedriver. ...

  9. CXF-JAX-WS开发(一)入门案例

    一.Web Service 1.定义 W3C定义,Web服务(Web service)应当是一个软件系统,用以支持网络间不同机器的互动操作. 2.作用 多系统间数据通信 二.CXF是什么? CXF是目 ...

  10. Centos6.6 编译安装nginx

    一.基本环境 nginx 1.9版以后增加了一些新的特性,支持tcp负载均衡,不过这次还是用1.8.0,这里面有个memcached的代理模块,有时间再测试下 1.centos6.6 2.nginx1 ...