博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj千题计划225:bzoj2143: 飞飞侠
阅读量:6901 次
发布时间:2019-06-27

本文共 1887 字,大约阅读时间需要 6 分钟。

 

分层图最短路

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

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

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

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

 

#include
#include
#include
#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[4],Y[4]; LL dp[N][N][N<<1];bool vis[N][N][N<<1]; int dx[5]={
0,-1,0,1,0};int dy[5]={
0,0,1,0,-1}; struct node{ int x,y,k; LL val; node(int x_=0,int y_=0,int k_=0,int val_=0) :x(x_),y(y_),k(k_),val(val_) {} bool operator < (node p) const { return val>p.val; } }now; priority_queue
q; void read(int &x){ x=0; int f=1; char c=getchar(); while(!isdigit(c)) { if(c=='-') f=-1; c=getchar(); } while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); } x*=f;} void dijkstra(int e){ for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) for(int k=0;k<=n+m-2;++k) { dp[i][j][k]=inf; vis[i][j][k]=false; } while(!q.empty()) q.pop(); vis[X[e]][Y[e]][0]=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[1]][Y[1]][0] || !vis[X[2]][Y[2]][0] || !vis[X[3]][Y[3]][0])) { 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=0;i<5;++i) { nx=now.x+dx[i]; ny=now.y+dy[i]; if(nx<=0 || nx>n || ny<=0 || ny>m) continue; if(dp[sx][sy][k]
=inf) printf("NO"); else printf("%c\n%lld",pos,ans); return 0;}

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8420891.html

你可能感兴趣的文章
Office 365管理员指引 13——创建部门网站
查看>>
虚函数
查看>>
Hashtable 与HashMap的区别
查看>>
分享常用的gis算法(C#)
查看>>
android获取google邮箱
查看>>
打造高可用 LVS+keepalived
查看>>
商务表现仍不及三星Note5的iPhone何时会再出个SPen?
查看>>
给定一个有序整数数组,元素各不相同且按照升序排列,编写一个算法,创建一个高度最小的二叉查找树...
查看>>
分布式搜索elasticsearch 环境搭建 -插件
查看>>
源码安装lamp
查看>>
统计大写字母个数
查看>>
js延时执行
查看>>
htop,glances,以及dstat等几个命令的用法
查看>>
ObjectARX_选择集
查看>>
zabbix 编译安装
查看>>
环路检测
查看>>
apache 开机自启动
查看>>
Redhat nis client两种接入方式
查看>>
java和scala中>>和>>>
查看>>
mysql+keepalived基于业务的高可用
查看>>