日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

AOJ 558 Cheese(bfs)

發(fā)布時(shí)間:2024/4/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AOJ 558 Cheese(bfs) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意:網(wǎng)格圖,老鼠吃奶酪,吃完奶酪體力值會(huì)增加,只能吃硬度不大于體力值的,問(wèn)最小步數(shù)。

思路:按硬度從小到大的吃起,依次求最短路。

我用曼哈頓距離估價(jià)的A*,和普通bfs的time沒(méi)區(qū)別啊,還把優(yōu)先級(jí)那里寫(xiě)錯(cuò)了。。。

#include<bits/stdc++.h> using namespace std;#define PS push #define PB push_back #define MP make_pair #define fi first #define se second const int INF = 0x3f3f3f3f;typedef long long ll;inline int read() {int ret; char c; while(c = getchar(),c<'0'||c>'9');ret = c-'0';while(c = getchar(),c>='0'&&c<='9') ret = ret*10 + c-'0';return ret; }const int SZ = 1e3+5;char g[SZ][SZ]; int H,W,N; int vis[SZ][SZ],clk; struct Node {int x,y,f,h;bool operator <(const Node&th) const {return f > th.f || ( f == th.f && h < th.h);// } }pos[10];int tar; inline int MHT(Node &o) {return (abs(pos[tar].x-o.x) + abs(pos[tar].y-o.y)); }void GetPos() {REP0(i,H){REP0(j,W){char c = g[i][j];if(c == 'S'){pos[0] = {i,j};}else if('1'<= c && c <='9' ){pos[c-'0'] = {i,j};}}} }const int dx[] = {0,1,0,-1}; const int dy[] = {1,0,-1,0};inline bool valid(int x,int y) {return x>=0&&x<H&&y>=0&&y<W&&g[x][y]!='X'&&vis[x][y] != clk; }int astar_bfs(int st) {priority_queue<Node> q;Node u;u.x = pos[st].x;u.y = pos[st].y;u.h = u.f = MHT(u);q.push(u);clk++;while(q.size()){u = q.top(); q.pop();if(u.x == pos[tar].x && u.y == pos[tar].y ) return u.f-u.h;REP0(k,4){Node v;v.x = u.x + dx[k];v.y = u.y + dy[k];if(!valid(v.x,v.y)) continue;vis[v.x][v.y] = clk;v.h = MHT(v);v.f = u.f-u.h+1+v.h;q.push(v);}}return -1; }//#define LOCAL int main() { #ifdef LOCALfreopen("in.txt","r",stdin); #endifH = read(); W = read(); N = read();for(int i = 0; i < H; i++){scanf("%s",g[i]);}GetPos();int ans = 0;REP1(i,N){tar = i;ans += astar_bfs(i-1);}printf("%d\n",ans);return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/jerryRey/p/4889607.html

總結(jié)

以上是生活随笔為你收集整理的AOJ 558 Cheese(bfs)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。