AtCoder Beginner Contest 170 F. Pond Skater

题目链接

第一次碰到会写的 F,真的哭辽/(ㄒoㄒ)/~~,BFS+剪枝
题目有几个坑点:
1.初始化,我们直接用变量建二维数组不一定就是0,要初始化一下
2.剪枝是一门艺术,怎么剪效果最好,这题的关键就是步数判断,假如 aaa 能 BFS 到 bbb,如果此时 bbb 的步数已经小于等于 aaa 了,那么很明显就没有走下去的必要了
AC代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{int x,y;
};
int h,w,sx,sy,ex,ey,k;
int mo[4][2]={1,0,-1,0,0,1,0,-1};
main(){cin>>h>>w>>k;cin>>sx>>sy>>ex>>ey;char g[h][w];int step[h][w],vis[h][w];memset(vis,0,sizeof(vis));memset(step,0,sizeof(step));for(int i=0;i<h;i++){for(int j=0;j<w;j++)cin>>g[i][j];}sx--,sy--,ex--,ey--;queue<node>q;node a,b;a.x=sx;a.y=sy;step[a.x][a.y]=0;vis[a.x][a.y]=1;q.push(a);int ans=1e9;while(!q.empty()){a=q.front();q.pop();if(a.x==ex && a.y==ey) ans=min(ans,step[a.x][a.y]);for(int i=0;i<4;i++){for(int j=1;j<=k;j++){b.x=a.x+mo[i][0]*j;b.y=a.y+mo[i][1]*j;if(b.x<0||b.x>=h||b.y<0||b.y>=w||(step[b.x][b.y]&&step[b.x][b.y]<=step[a.x][a.y])) break;else{if(g[b.x][b.y]=='.'&&vis[b.x][b.y]==0){vis[b.x][b.y]=1;step[b.x][b.y]=step[a.x][a.y]+1;q.push(b);}else if(g[b.x][b.y]=='@') break;}}}}ans==1e9?cout<<-1:cout<<ans;
}

AtCoder Beginner Contest 170 F. Pond Skater相关推荐

  1. AtCoder题解——Beginner Contest 170——F - Pond Skater

    题目相关 题目链接 AtCoder Beginner Contest 170 F题,https://atcoder.jp/contests/abc170/tasks/abc170_f. Problem ...

  2. AtCoder Beginner Contest 215 F - Dist Max 2

    AtCoder Beginner Contest 215 F - Dist Max 2 平面上有一系列的点(xi,yi)(x_i,y_i)(xi​,yi​),定义两点(xi,yi),(xj,yj)(x ...

  3. AtCoder Beginner Contest 204 F Hanjo 2

    AtCoder Beginner Contest 204 F Hanjo 2 H宽,W长的二维平面上,用1 * 1或者2 * 1的地砖来铺,要求铺满,求出方案数. 数据范围H <= 6, W & ...

  4. AtCoder Beginner Contest 167 F.Bracket Sequencing

    AtCoder Beginner Contest 167 F.Bracket Sequencing 题目链接 判断括号匹配的字符串问题~ 首先给出的所有字符串的左右括号数是要匹配的,这个很好判断,用一 ...

  5. AtCoder Beginner Contest 187 F.Close Group Editorial

    AtCoder Beginner Contest 187 F.Close Group Editorial 题目链接 状压DP~ 如果对边暴力的话复杂度约为 21502^{150}2150,显然不可取, ...

  6. AtCoder Beginner Contest 194 F - Digits Paradise in Hexadecimal 数位dp

    传送门 文章目录 题意: 思路: 题意: 给一个161616进制的串NNN,让你求1−N1-N1−N中有多少个数有kkk个不同的数且没有前导零. 思路: NNN很大,有2e52e52e5了,那么就比较 ...

  7. AtCoder Beginner Contest 192 F - Potion 背包dp

    传送门 题意: 给你nnn个数,让后让你选出来kkk个AAA,把他们求和,之后再递增kkk直到正好达到xxx,求最小的递增次数. 思路: 转化一下题意就是求∑A=x(modlen)\sum A=x(\ ...

  8. Caddi Programming Contest 2021(AtCoder Beginner Contest 193) F.Zebraness

    题目链接 Problem Statement We have a grid with N horizontal rows and N vertical columns. Let (i,j) denot ...

  9. AtCoder Beginner Contest 187 F - Close Group

    https://atcoder.jp/contests/abc187/tasks/abc187_f 有点像小米决赛的G题啊,所以就秒了 dp[i]表示i这个状压状态,最少可以是多少连通块组成 先预处理 ...

最新文章

  1. Apache Shiro教程
  2. CentOS7.5下时间戳转换为时间
  3. 蚁群算法matlab vrp问题车辆限重,蚁群算法MATLAB解VRP问题
  4. springmvc往html设置变量,SpringMVC:@MatrixVariable矩阵变量
  5. python交互模式中换行_在Python日志模式中禁止换行
  6. 操作系统—覆盖与交换
  7. 【c++ templates读书笔记】【4】技巧性基础知识
  8. 打造适合 Ruby on Rails 开发的 Sublime Text
  9. android智能电视直播源抓取教程,求人不如求己,教你自己抓取直播源的方法!...
  10. 创建一个可以复制百度文库的Chrome插件
  11. 读书笔记_稻盛和夫《心》
  12. Spark Structured Steaming实战
  13. 推荐系统实践(八)UCG 利用ltf-idf方法
  14. 微信web开发工具 移动设备调试
  15. gethostbyname linux,gethostbyname()
  16. VRTK插件详解四:部分自带案例分析
  17. Android 开发 Flutter
  18. idea 使用try/catch 快捷方法(Surround With)(亲测有效)
  19. 我的职业理想之计算机类1000,我的职业理想
  20. Serv-U的反弹攻击及其利用时间:2006-12-20 11:09来源:中国网管联盟 作者:网管整理 点击:899次...

热门文章

  1. The Pilots Brothers‘ Refrigerator(高效贪心)
  2. 阅文市值腰斩后一直未翻身,网络文学是真繁荣还是假昌盛?
  3. okHttp使用中报Could not find method java.nio.file.Files.newOutputStreamo警告问题
  4. SQLServer中服务器角色和数据库角色权限详解角色
  5. 纳米软件之通信设备自动测试系统
  6. 百亿互刷宝php 站长,百度排名百亿互刷宝
  7. 剑灵狂欢区服务器位置,9377剑灵洪门崛起6月25日部分区合服公告
  8. Ajax洗洁精的特性,洗涤剂中常用表面活性剂的特点
  9. 第五篇 numpy随机函数
  10. FFmpeg m3u8文件返回Invalid data found when processing input错误