https://ac.nowcoder.com/acm/contest/318/F

C++版本一

题解:思路:二分+搜索,每次二分利姆鲁的初始攻击值,如果这个攻击值能够拯救到静就将mid赋值给ub,同时令ans = mid,否则就将mid赋值给lb,最后输出ans即可。

#include<bits/stdc++.h>
using namespace std;int t, n, sx, sy, ex, ey;
int mp[505][505], vis[505][505];
int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1};struct node {int x, y;
}nw, nxt;bool go(int x, int y) {if(x < 1 || x > n) return false;if(y < 1 || y > n) return false;if(vis[x][y]) return false;return true;
}bool check(int x) {queue<node> q;memset(vis, 0, sizeof(vis));nw.x = sx, nw.y = sy;vis[sx][sy] = 1;q.push(nw);while(!q.empty()) {nw = q.front(); q.pop();if(nw.x == ex && nw.y == ey) return true;for(int i  = 0; i < 4; i++) {nxt.x = nw.x + dx[i];nxt.y = nw.y + dy[i];if(go(nxt.x, nxt.y) && mp[nxt.x][nxt.y] <= x) {q.push(nxt);vis[nxt.x][nxt.y] = 1;}}}return false;
}int main() {scanf("%d", &t);while(t--) {int mx = -1;scanf("%d", &n);for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {scanf("%d", &mp[i][j]);mx = max(mx, mp[i][j]);}}scanf("%d%d%d%d", &sx, &sy, &ex, &ey);int ub = mx, lb = 0, mid;while(ub >= lb) {mid = (ub + lb) >> 1;if(check(mid)) {ub = mid - 1;} else {lb = mid + 1;}}printf("%d\n", lb);}return 0;
}

C++版本二

题解:

二分+BFS

/*
*@Author:   STZG
*@Language: C++
*/
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=1000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
int t,n,m,k;
int a[N][N];
int b[][2]={1,0,0,1,-1,0,0,-1};
int vis[N][N];
int sx,sy,ex,ey;
struct node{int x,y;
}f,s,tmp;
bool bfs(int x){memset(vis,0,sizeof(vis));queue<node>q;s.x=sx;s.y=sy;vis[sx][sy]=1;q.push(s);while(!q.empty()){f=q.front();q.pop();if(f.x==ex&&f.y==ey){return 1;}for(int i=0;i<4;i++){tmp.x=f.x+b[i][0];tmp.y=f.y+b[i][1];//cout<<tmp.x<<" "<<tmp.y<<endl;if(1<=tmp.x&&tmp.x<=n&&1<=tmp.y&&tmp.y<=n&&!vis[tmp.x][tmp.y]&&x>=a[tmp.x][tmp.y]){vis[tmp.x][tmp.y]=1;q.push(tmp);}}}return 0;
}
int main()
{
#ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout);
#endifwhile(~scanf("%d",&t)){while(t--){scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&a[i][j]);}}scanf("%d%d%d%d",&sx,&sy,&ex,&ey);int l=0;int r=1e5;int mid;int ans=0;while(l<=r){mid=(l+r)>>1;if(bfs(mid)){ans=mid;r=mid-1;}else{l=mid+1;}}printf("%d\n",ans);}}//cout << "Hello world!" << endl;return 0;
}

关于我转生变成史莱姆这档事相关推荐

  1. 中石油训练赛 - 关于我转生变成史莱姆这档事(dfs)

    题目描述 关于我转生变成史莱姆这档事这部番剧中,上班族的三上悟因为某个事件而作为史莱姆在异世界转生了.在转生时得到了"大贤者"和"捕食者"这两个独特技能.虽然身 ...

  2. 日本热门TV动画《关于我转生变成史莱姆这档事》第三季将在2024年春放送

    日本热门TV动画<关于我转生变成史莱姆这档事第三季>将于2024年春季播出. BD短篇小说「彩叶草之梦」宣布动画化,全3话,2023年秋播出 <关于我转生变成史莱姆这档事>是经 ...

  3. 【牛客 - 318F】关于我转生变成史莱姆这档事(二分,搜索)

    题干: 有一天,利姆鲁在这个世界最重要的人静被魔王带走,并将其困在一个n*n的迷宫内的某一处,迷宫的每个格子都可能有一只魔物,魔物的攻击力为a[i][j],因而利姆鲁只有当攻击力大于等于a[i][j] ...

  4. 期末前端web大作业:用DIV+CSS技术设计的动漫网站——关于我转生成史莱姆这件事 6页

    ⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 | 网页设计作业 | 动漫网页设计 | 动漫网页设计成品 | 动漫 ...

  5. 关于我转生成史莱姆这件事

    链接:https://ac.nowcoder.com/acm/contest/318/F 来源:牛客网 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 262144K,其他语言5242 ...

  6. web网页设计期末课程大作业:动漫主题网站设计——关于我转生史莱姆这件事(6页)HTML+CSS

    HTML实例网页代码, 本实例适合于初学HTML的同学.该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代 ...

  7. coreldraw登录老是出现未知错误_原神:新版本bug频出,史莱姆消失,联机模式提示506错误码...

    这个1.1版本真就"乐事"不断呀,各种bug频出,冻梨有些疑惑,版本上线前真的经过测试了么?不会就开发组跑一遍正常流程,通了就急匆匆地更新了吧. 绝大部分玩家都遭遇了的506错误代 ...

  8. android模拟器 diy,史莱姆机DIY模拟器

    史莱姆机DIY模拟器是一款非常治愈减压的手机游戏.该游戏有很多乐趣,它的玩法就类似与橡皮泥的玩法,不断你怎么捏它都是一个形状,该有戏是一款粘液模拟器,你可以在游戏里捏出各种各样的DIY出来,游戏画面和 ...

  9. 分裂的史莱姆(二进制)

    Description 史莱姆(Slime),是一种在现代电子游戏与奇幻小说常常出现的虚构生物,最早在1958年同名小说里出现.其流行形象是一种果冻状或半液体状.身体不透明或半透明.可以变换形状.能够 ...

最新文章

  1. linux Figlet 转换字符字
  2. Rendering Linear lighting and color
  3. JAVA设计模式-观察者模式(Observe)
  4. c语言中什么函数可以作为虚函数,C++语言中的“虚函数”就像C语言中的指针,必须要弄懂的...
  5. pvr转png工具_pngtosvg 一个神奇的在线工具
  6. 在IIS上SSL的部署和启动SSL安全
  7. OSChina 周二乱弹 —— 技术宅正确装逼姿势
  8. 如何开启电脑远程桌面服务器,远程桌面服务怎么开启
  9. php随机名人名言,php随机输出名人名言 实现代码
  10. Unity3D 页游测评报告
  11. CSS Reset(样式重置)
  12. 为什么程序员不缺网?三步教你破解WiFi密码,够简单!
  13. oracle中书写规范,oracle sql书写规范
  14. 项目运行时报错出现:因为在此系统上禁止运行脚本有关详细信息,请参阅 https。该如何解决
  15. 学弟想「白嫖」优质大学课,姐直接甩给他 8 个网站
  16. 瑞星防火墙导致系统运行缓慢的问题
  17. 国内常用的代理ip形式动态住宅ip和移动手机代理ip有什么区别?
  18. 利用公式计算π=4(1-1/3+1/5-1/7+1/9-...)的近似值,直到括号中最后一项的绝对值小于0.000001为止
  19. 环境大数据应用“含苞待放”?
  20. 纽约大学计算机科学研究生录取条件,纽约大学本科及研究生录取条件 申请纽约大学干货分享...

热门文章

  1. oracle shared_pool_size 0,Oracle shared_pool_reserved_size参数设置说明
  2. 笔记本电脑键盘切换_全球首款折叠屏笔记本电脑ThinkPad X1 Fold:5G高速互联拥抱PC场景融合时代...
  3. 为什么数组排序大写字母在前小写字母在后
  4. matlab红外图像温度提取,一种基于红外热图的温度提取方法.pdf
  5. python去掉列表的括号和逗号_在每行之后显示没有逗号,括号等的python 2d...
  6. keras从入门到放弃(十九)RNN和LSTM
  7. 从LXMERT到VLMO:多模态预训练模型的演变史
  8. ACM MM 2021 | 面向多模态情绪识别的双流异质图递归神经网络
  9. ACL 2020 | 用于多领域端到端任务型对话系统的动态融合网络
  10. [PAMI2013] Guided Image Filtering 导向滤波器以及OpenCV-Python代码实现