bzoj 2143 飛飛俠 最短路

2021-08-10 02:38:36 字數 880 閱讀 8276

解題思路:

這道題點很少,但是邊可能很多,直接建圖做最短路顯然不可行。

但是如果把彈射看成獲得了可以走a[i][j]的能量。

這樣就可以直接最短路了。

每走一格可看作消耗1的能量,f[i][j][k]表示在i,j這個點且有k的能量的最少費用。

每次只要向四個方向走,或者原地不動即可。

做三次最短路即可。

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

int getint()

const

int n=205;

const

int fx[5]=;

const

int fy[5]=;

const ll inf=0x3f3f3f3f3f3f3f3f;

int n,m,h,x[4],y[4];

int a[n][n],b[n][n];

ll dis[n][n][n<<1],d[4][4];

struct node

};priority_queuevector

,greater>q;

void dijkstra(int s,int t1,int t2)

); while(!q.empty()));}

}}

else);}

}}

}int main()

bzoj2143 飛飛俠 最短路

用d i j k 表示走到第 i,j 格,在不彈射的情況下還能再走k步的最小花費,那麼有轉移 d i j k d x y k 1 其中 i,j 和 x,y 相鄰或相等,k 0,表示走到相鄰一格或不走 d i j 0 a i j d x y b i j 表示一次彈射。注意樣例輸入的a,b陣列相反?另外...

BZOJ 2143 飛飛俠 最短路

description 飛飛國是乙個傳說中的國度,國家的居民叫做飛飛俠。飛飛國是乙個n m的矩形方陣,每個格仔代表乙個街區。然而飛飛國是沒有交通工具的。飛飛俠完全靠地面的彈射裝置來移動。每個街區都裝有彈射裝置。使用彈射裝置是需要支付一定費用的。而且每個彈射裝置都有自己的彈射能力。我們設第i行第j列的...

BZOJ2143 飛飛俠 最短路

description 給出兩個 n m 的矩陣 a,b,以及 3 個人的座標 在 i,j 支付 ai,j 的費用可以彈射到曼哈頓距離不超過 bi,j 的位置 問三個人匯合所需要的最小總費用 sample input 4 4 0 0 0 0 1 2 2 0 0 2 2 1 0 0 0 0 5 5 5...