bzoj 2143: 飞飞侠
#include<cstdio>
#include<iostream>
#include<queue>
#define inf 1000000000
#define M 155
using namespace std;
int xx[]={,,-,,},yy[]={,,,,-};
int a[M][M],b[M][M],n,m,mx,x1,x2,y1,y2,z1,z2,a1,a2,b1,b2,c1,c2,v[M][M][*M],d[M][M][*M];
char ch;
int ans=inf;
struct data
{
int x,y,w,w1;
};
bool operator>(data a,data b)
{
return a.w>b.w;
}
void dij(int x,int y)
{
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
for(int k=;k<=mx;k++)
{
v[i][j][k]=;
d[i][j][k]=inf;
}
priority_queue<data,vector<data>,greater<data> >q;
v[x][y][]=;
d[x][y][a[x][y]]=b[x][y];
q.push((data){x,y,b[x][y],a[x][y]});
for(;!q.empty()&&(!v[x1][x2][]||!v[y1][y2][]||!v[z1][z2][]);)
{
int x=q.top().x,y=q.top().y,w1=q.top().w1;
q.pop();
if(v[x][y][w1])
continue;
if(w1)
{
for(int i=;i<;i++)
{
int a1=x+xx[i],a2=y+yy[i];
if(a1<||a2<||a1>n||a2>m||v[a1][a2][w1-])
continue;
if(d[x][y][w1]<d[a1][a2][w1-])
{
d[a1][a2][w1-]=d[x][y][w1];
q.push((data){a1,a2,d[x][y][w1],w1-});
}
}
}
else
if(d[x][y][a[x][y]]>d[x][y][]+b[x][y])
{
d[x][y][a[x][y]]=d[x][y][]+b[x][y];
q.push((data){x,y,d[x][y][a[x][y]],a[x][y]});
}
}
for(;!q.empty();q.pop());
return;
}
int main()
{
scanf("%d%d",&n,&m);
mx=n+m-;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
scanf("%d",&a[i][j]);
a[i][j]=min(a[i][j],max(mx-i-j+,i+j-));
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&b[i][j]);
scanf("%d%d%d%d%d%d",&x1,&x2,&y1,&y2,&z1,&z2);
dij(x1,x2);
a1=d[y1][y2][];
a2=d[z1][z2][];
dij(y1,y2);
b1=d[x1][x2][];
b2=d[z1][z2][];
dij(z1,z2);
c1=d[x1][x2][];
c2=d[y1][y2][];
if(b1+c1<ans)
{
ch='X';
ans=b1+c1;
}
if(a1+c2<ans)
{
ch='Y';
ans=a1+c2;
}
if(a2+b2<ans)
{
ch='Z';
ans=a2+b2;
}
if(ans>=inf)
printf("NO");
else
printf("%c\n%d",ch,ans);
return ;
}
分层图跑DJ
bzoj 2143: 飞飞侠的更多相关文章
- BZOJ 2143 飞飞侠(分层最短路)
飞飞国是一个N×M的矩形方阵,每个格子代表一个街区.然而飞飞国是没有交通工具的.飞飞侠完全靠地面的弹射装置来移动.每个街区都装有弹射装置.使用弹射装置是需要支付一定费用的.而且每个弹射装置都有自己的弹 ...
- BZOJ2143: 飞飞侠
2143: 飞飞侠 题意: 给出两个 n ∗ m 的矩阵 A,B,以及 3 个人的坐标 在 (i, j) 支付 Ai,j 的费用可以弹射到曼哈顿距离不超过 Bi,j 的位置 问三个人汇合所需要的最小总 ...
- 【BZOJ 2143】 飞飞侠
Description 飞飞国是一个传说中的国度,国家的居民叫做飞飞侠.飞飞国是一个N×M的矩形方阵,每个格子代表一个街区.然而飞飞国是没有交通工具的.飞飞侠完全靠地面的弹射装置来移动.每个街区都装有 ...
- 刷题总结——飞飞侠(bzoj2143 最短路)
题目: Description 飞飞国是一个传说中的国度,国家的居民叫做飞飞侠.飞飞国是一个N×M的矩形方阵,每个格子代表一个街区.然而飞飞国是没有交通工具的.飞飞侠完全靠地面的弹射装置来移动.每个街 ...
- BZOJ2143 飞飞侠 & [校内NOIP2018模拟20181026] 最强大脑
Time Limit: 50 Sec Memory Limit: 259 MB Description 飞飞国是一个传说中的国度,国家的居民叫做飞飞侠.飞飞国是一个N×M的矩形方阵,每个格子代表一个街 ...
- Luogu 4473 [国家集训队]飞飞侠
BZOJ 2143 新技能:并查集优化最短路. 暴力最短路是$O(n^4)$的,然后拿个线段树优化一下连边就$O($能过$)$了. 但是这样都太慢了. 我们考虑一个点如果之前被更新过了,那么之后就不会 ...
- bzoj千题计划225:bzoj2143: 飞飞侠
http://www.lydsy.com/JudgeOnline/problem.php?id=2143 分层图最短路 把能够弹跳的曼哈顿距离看做能量 dp[i][j][k]表示在(i,j)位置,还有 ...
- luogu4473 BZOJ2143 2011[国家集训队]飞飞侠
题目戳这里 有问题可以在博客@ 应该还会有人来看吧,嘻嘻 正题: 题目大意: 题目很清楚,就是一个点有一定的范围,会有一定的花费 求三个点中的任意两个点到另一个点的最小花费 (麻麻教育我千万读好题目( ...
- [BZOJ 1800] 飞行棋
Link: BZOJ 1800 传送门 Solution: $O(n^4)$…… Code: #include <bits/stdc++.h> using namespace std; ] ...
随机推荐
- [玲珑OJ1044] Quailty and Binary Operation (FFT+cdq分治)
题目链接 题意:给定两个长度为n的数组a与长度为m的数组b, 给定一个操作符op满足 x op y = x < y ? x+y : x-y. 有q个询问,每次给出询问c,问:有多少对(i, j ...
- jsonp实现原理详细介绍
主要是浏览器的同源同域(协议相同,域名相同及端口相同)策略需要使用跨域获取数据,故需要jsonp跨域获取数据.重点:img的src,link的href及script的src不遵循浏览器的同源同域策略, ...
- 使用Nexus搭建Maven私服
1. 环境搭建 1.1 下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件--免费] NE ...
- Android手机分辨率基础知识(DPI,DIP计算)
1.术语和概念 概念解释 名词 解释 Px (Pixel像素) 不同设备显示效果相同.这里的“相同”是指像素数不会变,比如指定UI长度是100px,那不管分辨率是多少UI长度都是100px.也正是因为 ...
- spring data jpa 创建方法名进行简单查询
版权声明:本文为博主原创文章,未经博主允许不得转载. spring data jpa 可以通过在接口中按照规定语法创建一个方法进行查询,spring data jpa 基础接口中,如CrudRepos ...
- vitamio视频播放库
vitamio视频播放库 http://www.d evstore.cn/evaluation/testInfo/155-181.html
- Struts2的Action中如何操作作用域对象
得到作用域对象有三种方法,这里用代码来解释: package com.cy.action; import javax.servlet.ServletContext; import javax.serv ...
- !!转!!hashCode与equals的区别与联系
这篇文章写得很好!!! 原文链接:http://blog.csdn.net/afgasdg/article/details/6889383 一.equals方法的作用 1.默认情况(没有覆盖equal ...
- SQL 比较时间大小
比较字符串类型的时间大小 数据库中的时间是varchar类型的,MySql使用CURDATE()来获取当前日期,SqlServer通过GETDATE()来获取当前日期 1. 直接使用字符串来比较 注意 ...
- win7下载
正式版WIN7的64位旗舰版 http://pan.baidu.com/share/link?shareid=60038&uk=3960800092 下面是正式win8Windows 8 64 ...