添加链接描述
因为怪物数量小于等于10 所以可以枚举每个怪物是否选择通过 使用状压枚举的方式从当前位开始bfs 选择dist最小的可能性

#include<bits/stdc++.h>
using namespace std;
const int N=60;
char arr[N][N];
struct node {int x,y,h;
};
vector<node >b;
typedef pair<int,int> pii;
int vis[N][N],dist[N][N];
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int n,m,h;
int res=0x3f3f3f3f;
int mp[N][N];
void bfs(){queue<pii>q;memset(vis,0,sizeof vis);memset(dist,0x3f3f3f3f,sizeof dist);q.push({0,0});vis[0][0]=1;dist[0][0]=0;while(q.size()){pii p=q.front();q.pop();for(int i=0;i<4;i++){int x=p.first+dx[i],y=p.second+dy[i];if(x>=0&&x<n&&y>=0&&y<m&&vis[x][y]==0){if(arr[x][y]=='.'||(arr[x][y]!='*'&&mp[x][y])){//!!如果当前为通行  或者不为通信但是mp被选中vis[x][y]=1;q.push({x,y});dist[x][y]=dist[p.first][p.second]+1;}}}}//cout<<dist[n-1][m-1]<<endl;res=min(res,dist[n-1][m-1]);}int main(){cin>>n>>m>>h;for(int i=0;i<n;i++)scanf("%s",arr[i]);for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(arr[i][j]>='0'&&arr[i][j]<='9')b.push_back({i,j,arr[i][j]-'0'});}}for(int i=0;i<1<<b.size();i++){int sum=0;for(int j=0;j<b.size();j++){if((i>>j)&1)mp[b[j].x][b[j].y]=1,sum+=b[j].h;//!!//状压枚举  i右移枚举当前这位else mp[b[j].x][b[j].y]=0;}// cout<<sum<<endl;if(sum>=h)continue;bfs();}if(res==0x3f3f3f3f)cout<<"-1"<<endl;else cout<<res<<endl;return 0;
}

小红的rpg游戏 (状压 bfs相关推荐

  1. 【日常学习】【状压BFS】codevs2594 解药还是毒药题解

    题目描述 Description Smart研制出对付各种症状的解药,可是他一个不小心,每种药都小小地配错了一点原料,所以这些药都有可能在治愈某些病症的同时又使人患上某些别的病症(你可能会问那-那是解 ...

  2. codevs 2594 解药还是毒药(状压+bfs)

    题目描述 Description Smart研制出对付各种症状的解药,可是他一个不小心,每种药都小小地配错了一点原料,所以这些药都有可能在治愈某些病症的同时又使人患上某些别的病症(你可能会问那-那是解 ...

  3. [HNOI2006]最短母串问题——AC自动机+状压+bfs环形处理

    Description 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,„,Sn)都是T的子串. 32MB Input 第一行是一个正整数n(n< ...

  4. NowCoder110E Pocky游戏 状压DP

    传送门 题意:给出$N$个数和一个长为$M$.所有数在$[1,N]$范围之内的正整数序列$a_i$,求出这$N$个数的一种排列$p_1...p_N$使得$\sum\limits_{i=2}^M |p_ ...

  5. 牛客练习赛$18E\ pocky$游戏 状压$dp$

    正解:状压$dp$ 解题报告: 传送门$QwQ$ 首先注意下题目,这个$a_i$不是个排列,,,我开始想了好久说这不是傻逼题直接做嘛然后一看样例发现我是傻逼$/dk$ 一个套路,看到绝对值问题一般就是 ...

  6. hdu4771 Stealing Harry Potter's Precious (状压+bfs)

    Problem Description Harry Potter has some precious. For example, his invisible robe, his wand and hi ...

  7. jzoj4016-圈地为王【状压,bfs,几何】

    正题 题目链接:https://jzoj.net/senior/#contest/show/3011/1 题目大意 n∗mn*mn∗m的格子,格子之间有道路,对于每个iii就走过最短的回路使得 圈住i ...

  8. bzoj 3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(状压+BFS)

    3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 94  Solve ...

  9. 状压搜索 Circling Round Treasures:CodeForces - 375C

    题目:Circling Round Treasures:CodeForces - 375C 题意: 给你一个N*M的地图(N,M<=20),地图上'#'表示障碍物,'B'表示炸弹,数字表示宝藏( ...

最新文章

  1. Python 将字符串转为字典
  2. tableau问题汇总
  3. 使用基本的socket函数
  4. linux用终端上传文件和文件家到远程的服务器
  5. linux安装mysql8.0.18_Linux安装MySQL8.0
  6. P1101 单词方阵
  7. 树,森林,二叉树的互相转换
  8. css检测,CSS检测工具 CSS Lint简介
  9. linux 时间同步ntp
  10. java web编码详解_Java Web 之编解码分析
  11. 客户端与服务器端的认证方式(cookie,token,session)
  12. 「专题训练」k-Tree(CodeForces Round #247 Div.2 C)
  13. Ajax实现数据回显
  14. android修改HOLO对话框风格
  15. iis aspnet_iisreg.exe 0x8007000B
  16. 食品微商怎么靠快手引流,微商如何巧妙借助短视频引流
  17. Jenkins 前端 自动化发版/CICD
  18. 混沌图像加密matlab,基于复合混沌系统的彩色图像加密算法及Matlab实现
  19. Gartner 魔力象限
  20. echarts柱状图 双柱状图基本用法

热门文章

  1. TS复习----TS中的接口
  2. A brief introduction to MIMO
  3. 阿里云总裁胡晓明:为世界带去中国云计算大数据服务
  4. python的取整和取余_python实现取余操作的简单实例
  5. oracle install manually(手动建库)
  6. 三农自媒体是怎么挣钱的?100%可以参考
  7. SDK游戏盾是怎么防护的。如何接入。
  8. 小程序:双向数据绑定、父子传参、上拉加载更多、如何使用vant
  9. Java找出数组中第K大的数
  10. uni-app开发短视频创作伴侣AI配音语音合成神器