【BZOJ1001】[BeiJing2006]狼抓兔子 对偶图最短路
【BZOJ1001】[BeiJing2006]狼抓兔子
Description

Input
Output
输出一个整数,表示参与伏击的狼的最小数量.
Sample Input
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
题解:由于n太大所以不能用最小割,本题正解为对偶图最短路
先yy一下,如果有一个最优方案,那么它一定是一条线,把矩形切成两个块,要求这条线上每个点的3条入边都要埋伏,这不是最短路吗?
建图:
将每个三角形看成点,矩形的右、上两条边为起点,左、下两条边为终点,每一个三角形的边都相当于将两个三角形连起来的线(注意是无向边)
然后跑对优化Dijkstra
注意n==1||m==1的情况,数组要开大点
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <utility>
#define Up(A,B) ((A-1)*m+B)
#define Down(A,B) ((A-1)*m+B+n*m)
using namespace std;
int n,m,cnt,S,T;
int to[6000010],next[6000010],val[6000010],head[2000010],dis[2000010],vis[2000010];
priority_queue<pair<int,int> > pq;
int readin()
{
int ret=0; char gc=getchar();
while(gc<'0'||gc>'9') gc=getchar();
while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar();
return ret;
}
void add(int a,int b,int c)
{
to[cnt]=b,val[cnt]=c,next[cnt]=head[a],head[a]=cnt++;
to[cnt]=a,val[cnt]=c,next[cnt]=head[b],head[b]=cnt++;
}
int main()
{
n=readin()-1,m=readin()-1;
memset(head,-1,sizeof(head));
S=0,T=2*n*m+1;
int i,j,u,a,b;
for(i=1;i<=n+1;i++)
{
for(j=1;j<=m;j++)
{
a=Down(i-1,j),b=Up(i,j);
if(i==1) a=S;
if(i==n+1) b=T;
add(a,b,readin());
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m+1;j++)
{
a=Down(i,j),b=Up(i,j-1);
if(j==1) b=T;
if(j==m+1) a=S;
add(a,b,readin());
}
}
for(i=1;i<=n;i++) for(j=1;j<=m;j++) add(Up(i,j),Down(i,j),readin());
memset(dis,0x3f,sizeof(dis));
pq.push(make_pair(0,S)),dis[S]=0;
while(!pq.empty())
{
u=pq.top().second,pq.pop();
if(vis[u]) continue;
vis[u]=1;
for(i=head[u];i!=-1;i=next[i])
{
if(dis[to[i]]>dis[u]+val[i])
{
dis[to[i]]=dis[u]+val[i];
pq.push(make_pair(-dis[to[i]],to[i]));
}
}
}
printf("%d",dis[T]);
return 0;
}
【BZOJ1001】[BeiJing2006]狼抓兔子 对偶图最短路的更多相关文章
- BZOJ1001: [BeiJing2006]狼抓兔子【最短路+对偶图】
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Se ...
- BZOJ1001 BeiJing2006 狼抓兔子 【网络流-最小割】*
BZOJ1001 BeiJing2006 狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较 ...
- [BZOJ1001][BeiJing2006]狼抓兔子(最小割转最短路|平面图转对偶图)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 31805 Solved: 8494[Submit][ ...
- BZOJ1001: [BeiJing2006]狼抓兔子(优化的dinic或转化对偶图求最短路)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 30078 Solved: 7908[Submit][ ...
- BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 19528 Solved: 4818[Submit][ ...
- bzoj1001: [BeiJing2006]狼抓兔子 -- 最小割
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Description 现在小朋友们最喜欢的"喜羊羊与灰太狼 ...
- bzoj1001: [BeiJing2006]狼抓兔子(初识是你最小割)
1001: [BeiJing2006]狼抓兔子 题目:传送门 题解: 听说这题当初是大难题...可惜当年没有网络流hahahha 现在用网络流的思想就很容易解决了嘛 给什么连什么,注意是双向边,然后跑 ...
- [bzoj1001][BeiJing2006]狼抓兔子_网络流_最小割转对偶图
狼抓兔子 bzoj-1001 BeiJing2006 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还 ...
- [BZOJ1001] [Beijing2006] 狼抓兔子 (最短路)
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个 ...
随机推荐
- Hibernate- QBC查询方式
QBC查询方式 01.基本查询 02.组合查询 03.关联查询 04.分页查询 05.QBE查询 06.离线查询
- 用 phpize 编译共享 PECL 扩展库
有时候不能用 pecl 安装命令.这可能是因为在防火墙后面,或者是因为想要安装的扩展库还没有 PECL 兼容的包,例如 SVN 中尚未发布的扩展库.如果要编译这种扩展库,可以用更底层的编译工具来手工进 ...
- [mysql] mysql-myibatis-整理
==================================== insert ========================================== 语句1 <inser ...
- Read from socket failed: Connection reset by peer 问题
[FAILED] 解决方法:#chmod 600 sshd_config ssh_host_dsa_key ssh_host_key ssh_host_rsa_key#chmod 620 moduli ...
- imx6 hdmi接口支持
/************************************************************* * imx6 hdmi接口支持 * 新的板子需要使用到hdmi,今天就测试 ...
- 用 #include “filename.h” 格式来引用非标准库的头文件
用 #include “filename.h” 格式来引用非标准库的头文件(编译器将 从用户的工作目录开始搜索) #include <iostream> /* run this progr ...
- Ubuntu Server 下配置静态网络的方法
这几天一直在弄hadoop的集群,由于公司的网络原因,偶尔要重启路由器,如果网络是由路由器自动配置的话, 非常容易变换IP,这样的话,SSH无密码验证登陆到其他机器发送的配置文件*.pub就用不了,因 ...
- LoadRunner 调用dll方法
本文主要介绍简单DLL的编写方法及在LoadRunner中局部调用与全局调用DLL方法. 1.动态链接库的编写 在Visual C++6.0开发环境下,打开FileNewProject选项,可以选择W ...
- VS2010属性表的建立与灵活运用
问题引入:在VS2010当中,进行opencv.QT等的编程时,总是需要配置很多属性还有依赖项等,为了减少每次都重复配置属性的工作量,现在可以运行属性表这个东西来简化配置.opencv也可以这样建立使 ...
- mysql数据库中,查看数据库的字符集(所有库的字符集或者某个特定库的字符集)
需求描述: mysql中,想要查看某个数据库的字符集.通过information_schma模式下的schemata表来查询 环境描述: mysql版本:5.7.21-log 操作过程: 1.查看in ...