AOJ 558 Cheese(bfs)
题意:网格图,老鼠吃奶酪,吃完奶酪体力值会增加,只能吃硬度不大于体力值的,问最小步数。
思路:按硬度从小到大的吃起,依次求最短路。
我用曼哈顿距离估价的A*,和普通bfs的time没区别啊,还把优先级那里写错了。。。
#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; }
转载于:https://www.cnblogs.com/jerryRey/p/4889607.html
AOJ 558 Cheese(bfs)相关推荐
- BFS Aoj 0558 Cheese
在 H×W 的地图上有 N 个奶酪工厂, 分别生产硬NN 的奶酪. 有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪.老鼠有一个体力值, 初始时为 11, 每吃一个工厂的奶酪体力值增加 11(每个工 ...
- [Aizu]-0558 Cheese [BFS]
問題 今年も JOI 町のチーズ工場がチーズの生産を始め,ねずみが巣から顔を出した.JOI 町は東西南北に区画整理されていて,各区画は巣,チーズ工場,障害物,空き地のいずれかである.ねずみは巣から出発 ...
- 专题一:简单搜索、深搜、广搜
挑战程序设计竞赛(课后题难题汇总) 1. AOJ 0033 Ball(贪心) #include<cstdio> #include<algorithm> using namesp ...
- 《挑战程序设计竞赛(第2版)》习题册攻略
本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...
- BFS:图的最短路径 Aizu - 0558 Cheese
Cheese Aizu - 0558 大意:在H * W的地图上有N个奶酪工厂,每个工厂分别生产硬度为1-N的奶酪.有一只老鼠准备从出发点吃遍每一个工厂的奶酪.老鼠有一个体力值,初始时为1,每吃一个工 ...
- AOJ0558 Cheese【BFS】
問題 今年も JOI 町のチーズ工場がチーズの生産を始め,ねずみが巣から顔を出した.JOI 町は東西南北に区画整理されていて,各区画は巣,チーズ工場,障害物,空き地のいずれかである.ねずみは巣から出発 ...
- 运用BFS算法实现北京地铁路线换乘系统
本文通过我做过的一个小项目来分享一下如何通过BFS搜索算法实现北京地铁换乘路线.搜索的规则分别为最短距离与最少换乘线路.BFS算法的原理这里就不讲了,推荐一个B站的视频,对搜索算法讲解的很清晰: BF ...
- HDUOJ 1078 FatMouse and Cheese
HDUOJ 1078 FatMouse and Cheese 题目链接 Problem Description FatMouse has stored some cheese in a city. T ...
- LC-417. 太平洋大西洋水流问题(多源BFS、DFS)
417. 太平洋大西洋水流问题 难度中等558 有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋&quo ...
最新文章
- CentOS 7.6安装OpenMPI3.1.0
- mysql的数据类型以及性能优化
- 如何移动SQL SERVER的系统数据库
- [HTTP] HTTP消息
- java为什么要设计包装类_Java 为什么需要包装类
- 关于AE中出现 “对 COM 组件的调用返回了错误 HRESULT E_FAIL” 错误
- python编写财务软件_python 与财务
- js图片上传(配合七牛云)
- matlab多项式除法 分式展开,多项式除法有一种处理假分式的方法叫多项式除 – 手机爱问...
- UE4 InputMode无法锁定编辑器视口鼠标解决方案
- 1383: 手机短号 (多实例)
- setup/teardown用法汇总
- 数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)
- 医疗行业:容灾备份平台建设及运维难点
- 客户端与服务器的理解
- SIM7600CE应用程序调试流程
- 论文笔记-Vanilla Transformer:Character-Level Language Modeling with Deeper Self-Attention
- Lake Shore—CRX-EM-HF 型低温探针台
- 用cygwin从本地向ubuntu某路径下传文件时Permission denied解决方法
- 阿里百秀后台管理项目笔记 ---- Day01