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; ] ...
随机推荐
- QQMain
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class QQMain extends JFrame ...
- poj1556The Doors
链接 枚举两点 若不和任何线段相交 建边为dis(i,j) floyd求最短路 #include <iostream> #include<cstdio> #include< ...
- poj1584A Round Peg in a Ground Hole
链接 题意甚是难懂!这是第二遍做这道题了,依旧无法理解题意,搜了下题意... 首先需要判断是不是为凸多边形.(从一个顶点走一遍即可,要注意顺逆时针,题目中没有指明) 其次看一下圆是不是能够放入多边形内 ...
- .net 连接sqlserver类库
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...
- Python学习笔记5-元组
元组是用圆括号括起来的,其中的元素之间用逗号隔开 >>> t = 123,'abc',["come","here"] >>> ...
- spring中的Log4jConfigListener作用和webapp.root的设置
转:http://blog.sina.com.cn/s/blog_7bbf356c01016wld.html 使用spring中的Log4jConfigListener有如如下好处: 1. 动 ...
- C#_abstract的用法
/// <summary> /// 抽像类 /// </summary> public abstract class Hello { private string msg = ...
- [Selenium]点击Calendar控件后,Calendar dialog很快消失
有的日历控件使用了“opacity:0”透明度加上“display:none”来控制其是否显示,使用moveToElement方法不能移动到dialog上,可以把这两个属性的值进行修改,使其可见,使用 ...
- 解析excel表格为DataSet
using System;using System.Collections.Generic;using System.Data;using System.Data.OleDb;using System ...
- OpenCV_轮廓的查找、表达、绘制、特性及匹配
转摘网址为:http://www.cnblogs.com/slysky/archive/2011/10/14/2212227.html 虽然Canny之类的边缘检测算法可以根据像素间的差异检测出轮廓边 ...