【bzoj1001】【狼抓兔子】
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
看着论文学了一下平面图和对偶图《两极相通—浅析最大最小定理在信息学竞赛中的应用》
其实就是将这个平面图转化成一个对偶图,在这个对偶图上求最短路的长度,就是原来平面图的最小割。
#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】【狼抓兔子】相关推荐
- BZOJ1001 狼抓兔子 终于过了!
时间来不及了,先贴代码吧!有时间再写. 好苦逼啊,WA了若干次,还有一次RE,一次TLE. 虽然主要运用的算法和资料都由师兄提供了.还是太弱了,太天真了. 首先,数据范围就WA了,RE了,TLE了. ...
- [bzoj1001]狼抓兔子
现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点 ...
- bzoj1001狼抓兔子
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...
- 【BJOI2006】bzoj1001 狼抓兔子
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...
- BZOJ1001 狼抓兔子
最小割 代码 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) m ...
- 【BZOJ1001】狼抓兔子
[BZOJ1001]狼抓兔子 题面 bzoj 题解 懒得平面图转对偶图了,直接最小割板子加优化. #include <iostream> #include <cstdio> # ...
- 【BZOJ1001】狼抓兔子题解
BZOJ1001: [BeiJing2006]狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还 ...
- bzoj1001/BJOI2006 狼抓兔子
1001: [BeiJing2006]狼抓兔子(传送门) 图论新知识..没学过.. 平面图最小割等于对偶图的最短路 详见课件:http://wenku.baidu.com/view/8f1fde586 ...
- 狼抓兔子(平面图转对偶图)
狼抓兔子(平面图转对偶图) 面对下面这样一个网格的地形: 道路上的权值表示这条路上最多能够通过的兔子数,道路是无向的. 左上角和右下角为兔子的两个窝,开始时所有的兔子都聚集在左上角(1,1)的窝里,现 ...
最新文章
- Java 文件和byte数组转换
- DM8168 新三板系统启动
- CString 类型和引用
- 排序算法(一)--桶排序、冒泡、快排(JAVA)
- 学习OpenVINO笔记之Inference Engine Device Query API
- mysql配置文件改密码_mysql8.0 安装教程(自定义配置文件,密码方式已修改)
- tab+easyui datagrid无法正常显示
- word2vec的应用场景
- 连接mysql的各种方式
- 页面布局_【三十七集】页面布局中的视觉流
- spring框架包含的模块
- android 高德amap开发二(地图操作)
- 支付宝App支付源码
- c语言的get函数的用法,get函数的用法
- python3的下载和安装
- Android StepsView 步骤控件
- 前端跨域问题—解决Firefox浏览器显示“已阻止载入混合活动内容”的方法
- AUTOCAD教程——粘贴为块
- 二十四、红孩儿亲爹的考证
- 【一】c语言程序设计-介绍篇
热门文章
- ae导出gif插件_AE脚本:快速输出GIF动图格式插件脚本 Aescaripts GifGun 1.7 Win/Mac
- maya刷权重时有个叉_Maya权重如何刷取
- AltiumDesigner绘制PCB(二)
- 计算机科学省级期刊,计算机时代杂志
- Foursquare解密创新商机
- mysql 一边查询一边删除和一边新增一边查询判断所导致的问题
- 阿里P8 谈微服务的应用架构设计
- USB3.0和2.0有什么区别 --旧时光 oldtimeblog
- 最简单的命令开启cgi文件服务器
- 基于ADAU1761-ADC与DSP的接口链路设计