牛客假日团队赛2 F.跳跃
链接:
https://ac.nowcoder.com/acm/contest/924/F
题意:
Farmer John为了满足奶牛对美的享受而安装了人工湖。矩形的人工湖分成M行N列(1 <= M <= 30; 1 <= N <= 30)的方形小格子。有些格子有美丽的荷叶,有些有岩石,剩下的格子有的只是美丽的蓝色湖水。
Bessie通过从一片荷叶跳到另一片荷叶上来练习芭蕾。它现在正站在一片荷叶上(看输入数据了解具体位置)。它希望通过在荷叶上跳跃来到达另一片荷叶。它既不能跳到水里也不能跳到岩石上。
只有新手才会感到吃惊:Bessie的跳跃有点类似国际象棋中马那样的移动,在一个方向上移动M1(1 <= M1 <= 30)“格”,然后再在斜方向上移动M2 (1 <= M2 <= 30; M1 != M2)格(或者也许在一个方向上移动M2格,然后在斜方向上移动M1格)。Bessie有时可能有多达8中的跳跃选择。
给出池塘的构造以及Bessie跳跃的形式,找出Bessie从一个位置移动到另一个位置所需的最小的跳跃次数。这个跳跃对于所给的测试数据总是可能的。
思路:
BFS模板,唯一注意的就是下一步的位置。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN = 50 + 10;
const int MOD = 1e9 + 7;
struct Node
{
    int x_, y_;
    int step_;
    Node(int x, int y, int step):x_(x), y_(y), step_(step){}
};
int n, m, k, t;
int m1, m2, s, e;
int Map[MAXN][MAXN];
int Bfs(int Next[8][2])
{
    queue<Node> que;
    que.emplace(s, e, 0);
    while (!que.empty())
    {
        Node now = que.front();
        que.pop();
        for (int i = 0;i < 8;i++)
        {
            int nx = now.x_+Next[i][0];
            int ny = now.y_+Next[i][1];
            if (nx < 1 || nx > n || ny < 1 || ny > m)
                continue;
            if (Map[nx][ny] == 4)
                return now.step_+1;
            if (Map[nx][ny] != 1)
                continue;
            que.emplace(nx, ny, now.step_+1);
            Map[nx][ny] = 0;
        }
    }
    return 0;
}
int main()
{
    cin >> n >> m >> m1 >> m2;
    for (int i = 1;i <= n;i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cin >> Map[i][j];
            if (Map[i][j] == 3)
                s = i, e = j;
        }
    }
    int Next[8][2] = {{-m1, -m2}, {-m1, m2}, {-m2, -m1}, {-m2, m1},
                      {m1, -m2}, {m1, m2}, {m2, -m1}, {m2, m1}};
    int res = Bfs(Next);
    cout << res << endl;
    return 0;
}
牛客假日团队赛2 F.跳跃的更多相关文章
- 牛客假日团队赛5 F	随机数  BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 (dfs记忆化搜索的数位DP)
		链接:https://ac.nowcoder.com/acm/contest/984/F 来源:牛客网 随机数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ... 
- 牛客假日团队赛10  L	乘积最大 (dp,大数)
		链接:https://ac.nowcoder.com/acm/contest/1072/L?&headNav=acm&headNav=acm 来源:牛客网 乘积最大 时间限制:C/C+ ... 
- P5200 [USACO19JAN]Sleepy Cow Sorting 牛客假日团队赛6 D	迷路的牛 (贪心)
		链接:https://ac.nowcoder.com/acm/contest/993/E 来源:牛客网 对牛排序 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ... 
- 牛客假日团队赛6 D	迷路的牛  (思维)
		链接:https://ac.nowcoder.com/acm/contest/993/D 来源:牛客网 迷路的牛 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ... 
- 牛客假日团队赛5J	护城河  bzoj 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 (凸包的周长)
		链接:https://ac.nowcoder.com/acm/contest/984/J 来源:牛客网 护城河 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ... 
- 牛客假日团队赛5 K	金币馅饼 (DP 基础题)
		链接:https://ac.nowcoder.com/acm/contest/984/K 来源:牛客网 金币馅饼 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ... 
- 牛客假日团队赛5 L	Catch That Cow  HDU 2717 (BFS)
		链接:https://ac.nowcoder.com/acm/contest/984/L 来源:牛客网 Catch That Cow 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 3 ... 
- 洛谷 P2866 [USACO06NOV]糟糕的一天Bad Hair Day 牛客假日团队赛5 A (单调栈)
		链接:https://ac.nowcoder.com/acm/contest/984/A 来源:牛客网 题目描述 Some of Farmer John's N cows (1 ≤ N ≤ 80,00 ... 
- 「BZOJ1669」D	饥饿的牛 [Usaco2006 Oct] Hungry Cows 牛客假日团队赛5   (LIS,离散化树状数组)
		链接:https://ac.nowcoder.com/acm/contest/984/D 来源:牛客网 饥饿的牛 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ... 
随机推荐
- Linux- Linux自带定时调度Crontab使用详解
			Linux自带定时调度Crontab使用详解 在Linux当中,有一个自带的任务调度功能crontab,它是针对每个用户,每个用户都可以调度自己的任务. 示例:每分钟执行一次,将时间写入到指定文件当中 ... 
- spring2.5整合struts2
			首先第一步: 导入jar包: 我的做法: 导入你的基本使用的spring的jar包 和基本使用的struts2的jar包 然后struts2中有一个和spring整合的jar包一定要导入,不然会抛异常 ... 
- 从TS流到PAT和PMT
			转自:https://blog.csdn.net/rongdeguoqian/article/details/18214627 一 从TS流开始 最近开始学习数字电视机顶盒的开发,从MPEG-2到DV ... 
- PS 滤镜— —水波效果
			clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); I=imread ... 
- Ubuntu16.04上安装arm-linux-gcc4.4.3
			一.首先下载arm-linux-gcc-4.4.3.tar.gz安装包,安装包地址: http://www.cr173.com/soft/42654.html 二.解压安装包: sudo tar -z ... 
- POI2014
			...一个shabi和一堆神题的故事 今天只写了两道 之后随缘更吧 啊 顺便 snake我是不会更的 bzoj3829 POI2014 Farmcraft mhy住在一棵有n个点的树的1号结点上,每个 ... 
- 1080 Graduate Admission (30)(30 分)
			It is said that in 2013, there were about 100 graduate schools ready to proceed over 40,000 applicat ... 
- Swift范性
			关于泛型 「泛型」(Generic Code)也许是Swift相对于OC的最大特性之一吧!基于Swift的「泛型」特性,你能够写出扩展性更强.复用性更强的方法.类型,它可以让你尽可能避免重复代码,用一 ... 
- poj2777Count Color——线段树+状压
			题目:http://poj.org/problem?id=2777 状压每个颜色的选择情况,取答案时 | 一番: 注意题目中的区间端点可能大小相反,在读入时换一下位置: 注意pushdown()中要l ... 
- <正则吃饺子> :关于微信支付的简单总结说明(一)
			关于支付,一直想参与开发,现在根据项目中已有及参见的微信开发文档,将自己对于微信开发的流程进行简单的总结,以备后用和帮助后来者. 一.相关官方文档 微信支付官方文档:https://pay.weixi ... 
