AtCoder Beginner Contest 170 F. Pond Skater
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相关推荐
- AtCoder题解——Beginner Contest 170——F - Pond Skater
题目相关 题目链接 AtCoder Beginner Contest 170 F题,https://atcoder.jp/contests/abc170/tasks/abc170_f. Problem ...
- 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 ...
- AtCoder Beginner Contest 204 F Hanjo 2
AtCoder Beginner Contest 204 F Hanjo 2 H宽,W长的二维平面上,用1 * 1或者2 * 1的地砖来铺,要求铺满,求出方案数. 数据范围H <= 6, W & ...
- AtCoder Beginner Contest 167 F.Bracket Sequencing
AtCoder Beginner Contest 167 F.Bracket Sequencing 题目链接 判断括号匹配的字符串问题~ 首先给出的所有字符串的左右括号数是要匹配的,这个很好判断,用一 ...
- AtCoder Beginner Contest 187 F.Close Group Editorial
AtCoder Beginner Contest 187 F.Close Group Editorial 题目链接 状压DP~ 如果对边暴力的话复杂度约为 21502^{150}2150,显然不可取, ...
- AtCoder Beginner Contest 194 F - Digits Paradise in Hexadecimal 数位dp
传送门 文章目录 题意: 思路: 题意: 给一个161616进制的串NNN,让你求1−N1-N1−N中有多少个数有kkk个不同的数且没有前导零. 思路: NNN很大,有2e52e52e5了,那么就比较 ...
- AtCoder Beginner Contest 192 F - Potion 背包dp
传送门 题意: 给你nnn个数,让后让你选出来kkk个AAA,把他们求和,之后再递增kkk直到正好达到xxx,求最小的递增次数. 思路: 转化一下题意就是求∑A=x(modlen)\sum A=x(\ ...
- 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 ...
- AtCoder Beginner Contest 187 F - Close Group
https://atcoder.jp/contests/abc187/tasks/abc187_f 有点像小米决赛的G题啊,所以就秒了 dp[i]表示i这个状压状态,最少可以是多少连通块组成 先预处理 ...
最新文章
- Apache Shiro教程
- CentOS7.5下时间戳转换为时间
- 蚁群算法matlab vrp问题车辆限重,蚁群算法MATLAB解VRP问题
- springmvc往html设置变量,SpringMVC:@MatrixVariable矩阵变量
- python交互模式中换行_在Python日志模式中禁止换行
- 操作系统—覆盖与交换
- 【c++ templates读书笔记】【4】技巧性基础知识
- 打造适合 Ruby on Rails 开发的 Sublime Text
- android智能电视直播源抓取教程,求人不如求己,教你自己抓取直播源的方法!...
- 创建一个可以复制百度文库的Chrome插件
- 读书笔记_稻盛和夫《心》
- Spark Structured Steaming实战
- 推荐系统实践(八)UCG 利用ltf-idf方法
- 微信web开发工具 移动设备调试
- gethostbyname linux,gethostbyname()
- VRTK插件详解四:部分自带案例分析
- Android 开发 Flutter
- idea 使用try/catch 快捷方法(Surround With)(亲测有效)
- 我的职业理想之计算机类1000,我的职业理想
- Serv-U的反弹攻击及其利用时间:2006-12-20 11:09来源:中国网管联盟 作者:网管整理 点击:899次...
热门文章
- The Pilots Brothers‘ Refrigerator(高效贪心)
- 阅文市值腰斩后一直未翻身,网络文学是真繁荣还是假昌盛?
- okHttp使用中报Could not find method java.nio.file.Files.newOutputStreamo警告问题
- SQLServer中服务器角色和数据库角色权限详解角色
- 纳米软件之通信设备自动测试系统
- 百亿互刷宝php 站长,百度排名百亿互刷宝
- 剑灵狂欢区服务器位置,9377剑灵洪门崛起6月25日部分区合服公告
- Ajax洗洁精的特性,洗涤剂中常用表面活性剂的特点
- 第五篇 numpy随机函数
- FFmpeg m3u8文件返回Invalid data found when processing input错误