http://www.lydsy.com/JudgeOnline/problem.php?id=2143

分层图最短路

把能够弹跳的曼哈顿距离看做能量

dp[i][j][k]表示在(i,j)位置,还有能量k的最少花费

弹跳的曼哈顿距离增加1,能量减1

当能量减为0时,花费费用充满能量

#include<queue>
#include<cstdio>
#include<iostream> #define N 151 typedef long long LL; const LL inf=1e17; using namespace std; int n,m;
int energy[N][N],cost[N][N]; int X[],Y[]; LL dp[N][N][N<<];
bool vis[N][N][N<<]; int dx[]={,-,,,};
int dy[]={,,,,-}; struct node
{
int x,y,k;
LL val; node(int x_=,int y_=,int k_=,int val_=) :x(x_),y(y_),k(k_),val(val_) {} bool operator < (node p) const
{
return val>p.val;
} }now; priority_queue<node>q; void read(int &x)
{
x=; int f=; char c=getchar();
while(!isdigit(c)) { if(c=='-') f=-; c=getchar(); }
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
x*=f;
} void dijkstra(int e)
{
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
for(int k=;k<=n+m-;++k)
{
dp[i][j][k]=inf;
vis[i][j][k]=false;
}
while(!q.empty()) q.pop();
vis[X[e]][Y[e]][]=true;
dp[X[e]][Y[e]][energy[X[e]][Y[e]]]=cost[X[e]][Y[e]];
now.x=X[e];
now.y=Y[e];
now.k=energy[now.x][now.y];
now.val=cost[now.x][now.y];
q.push(now);
int sx,sy,nx,ny,k;
while(!q.empty() && (!vis[X[]][Y[]][] || !vis[X[]][Y[]][] || !vis[X[]][Y[]][]))
{
now=q.top();
q.pop();
sx=now.x; sy=now.y; k=now.k;
if(vis[sx][sy][k]) continue;
vis[sx][sy][k]=true;
if(now.k)
{
for(int i=;i<;++i)
{
nx=now.x+dx[i];
ny=now.y+dy[i];
if(nx<= || nx>n || ny<= || ny>m) continue;
if(dp[sx][sy][k]<dp[nx][ny][k-])
{
dp[nx][ny][k-]=dp[sx][sy][k];
q.push(node(nx,ny,k-,dp[nx][ny][k-]));
}
}
}
else
{
if(dp[sx][sy][]+cost[sx][sy]<dp[sx][sy][energy[sx][sy]])
{
dp[sx][sy][energy[sx][sy]]=dp[sx][sy][]+cost[sx][sy];
q.push(node(sx,sy,energy[sx][sy],dp[sx][sy][energy[sx][sy]]));
}
}
}
} int main()
{
int x;
read(n); read(m);
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
{
read(x);
energy[i][j]=min(x,max(i-,n-i)+max(j-,m-j));
}
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
read(cost[i][j]);
for(int i=;i<=;++i)
read(X[i]),read(Y[i]);
LL ans=inf; char pos;
dijkstra();
LL a1=dp[X[]][Y[]][],a2=dp[X[]][Y[]][];
dijkstra();
LL b1=dp[X[]][Y[]][],b2=dp[X[]][Y[]][];
dijkstra();
LL c1=dp[X[]][Y[]][],c2=dp[X[]][Y[]][];
if(b1+c1<ans) ans=b1+c1,pos='X';
if(a1+c2<ans) ans=a1+c2,pos='Y';
if(a2+b2<ans) ans=a2+b2,pos='Z';
if(ans>=inf) printf("NO");
else printf("%c\n%lld",pos,ans);
return ;
}

bzoj千题计划225:bzoj2143: 飞飞侠的更多相关文章

  1. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. bzoj千题计划174:bzoj1800: [Ahoi2009]fly 飞行棋

    http://www.lydsy.com/JudgeOnline/problem.php?id=1800 圆上两条直径构成矩形的对角线 #include<cstdio> using nam ...

  3. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  4. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  5. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

  6. bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  7. bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  8. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  9. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

随机推荐

  1. 设计模式 笔记 中介者模式 Mediator

    //---------------------------15/04/27---------------------------- //Mediator 中介者模式----对象行为型模式 /* 1:意 ...

  2. EF Core 新特性——Owned Entity Types

    Owned Entity Types 首先owned entity type是EF Core 2.0的新特性. 至于什么是owned entity types,可以先把他理解为EF Core官方支持的 ...

  3. 接口自动化学习--testNG

    一个月一更的节奏~ testNg是一个开源的自动化测试框架..具体那些什么特点的就不想打了- -,贴张图(虽然也看不懂): 学习网站:https://www.yiibai.com/testng 一样是 ...

  4. Apache服务器出现Forbidden 403错误提示的解决方法总结

    在配置Linux的 Apache服务时,经常会遇到http403错误,我今天配置测试时也出现了,最后解决了,总结了一下.http 403错误是拒绝访问的意思,有很多原因的.还有,这些问题在win平台的 ...

  5. hexo发文章

    http://blog.csdn.net/qq_36099238/article/details/54576089

  6. 跟踪分析Linux内核的启动过程小解

    跟踪分析Linux内核的启动过程 “20135224陈实  + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029 ...

  7. 框架-Spring

    项目中都用到了Spring.Mybatis.SpringMVC框架,首先来谈一谈Spring框架,Spring框架以IOC.AOP作为主要思想. IOC----控制反转 IOC的全称为Inversio ...

  8. 图文转化(Alpha)版使用说明

    图文转化使用说明 本软件是一款扫描图片上的文字转化成txt或doc格式存储的软件. 现在还只是初期简单的一个实现,软件暂时的界面显示如下: 简介:照片选取的是手机里的本地照片,拍照打开照相机进行拍照. ...

  9. 人生第一次JAVA编程,电梯(并不算完成版),以及IDEA里使用git

    首先先说说Intellij IDEA与git的互联,首先在任意(我是在coding)gitlab里新建一个工程. 然后新建一个工程记得注明url和地址.名称等 如果无法创建,则需要指定git地址 创建 ...

  10. 从零开始学Kotlin-类的继承(6)

    从零开始学Kotlin基础篇系列文章 Kotlin中的超类Any Kotlin 中所有类都继承超类 Any 类 class demo6 //默认继承超类Any class demo6 : Any() ...