洛谷P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two 题解

洛谷P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two 题解

题目传送门。

思路

使用简单的模拟思想来模拟Farmer John和2头牛的移动过程,唯一的难点在于如何判断是否永远无法抓到2头牛。

这个难点可以使用一个简单的六维bool型数组来判断,若在某一时间点,2个移动对象的坐标以及方向都与之前的另一时间点相同,则代表他们陷入了死循环,自然就永远无法抓到对方了。

代码

#include<bits/stdc++.h>
#define endl '\n'using namespace std;const int INF = 0x3f3f3f3f;
const double EPS = 1e-8;
const int N = 15;int cx, cy, cd, jx, jy, jd;
int fx[4] = { -1, 0, 1, 0};
int fy[4] = {0, 1, 0, -1};
char mp[N][N];
bool vis[N][N][N][N][5][5];void movecows() {int tx = cx + fx[cd];int ty = cy + fy[cd];if(tx >= 1 && tx <= 10 && ty >= 1 && ty <= 10 && mp[tx][ty] != '*') {cx = tx;cy = ty;} else {cd++;cd %= 4;}
}void movejohn() {int tx = jx + fx[jd];int ty = jy + fy[jd];if(tx >= 1 && tx <= 10 && ty >= 1 && ty <= 10 && mp[tx][ty] != '*') {jx = tx;jy = ty;} else {jd++;jd %= 4;}
}int main() {for(int i = 1; i <= 10; i++) {for(int j = 1; j <= 10; j++) {cin >> mp[i][j];if(mp[i][j] == 'F') {mp[i][j] = '.';jx = i;jy = j;} else if(mp[i][j] == 'C') {mp[i][j] = '.';cx = i;cy = j;}}}int minu = 0;while(1) {if(vis[cx][cy][jx][jy][cd][jd]) {cout << 0 << endl;break;}vis[cx][cy][jx][jy][cd][jd] = 1;minu++;movecows();movejohn();if(cx == jx && cy == jy) {cout << minu << endl;break;}}return 0;
}

AC记录

AC记录,28ms,648.00KB。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/885480.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracleRAC11g升级到19c详细操作步骤

升级oracle11g集群到19.3 前述环境检查: [root@qhdb1 ~]# crsctl status res -t -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS ------------------------------------------------------------…

【深度学习】使用Miniconda进行python深度学习编程环境迁移

上pyhton深度学习的编程课,如果你是一线教师,你几乎经常会遇到这样的问题“同样的程序,学生在自己的电脑上运行报错”,多半是python相关的第三方包的版本问题导致。 今天我们就讲讲如何从根本上解决这个问题,确保学生在自己的电脑上和机房的电脑上有相同的实践结果。前提:…

getting-started/hello-world | hello world

将VContainer集成到应用程序中的基本方法是:在场景中创建一个继承自LifetimeScope的组件。它有一个容器和一个作用域。 在LifetimeScope的子类中使用C#代码注册依赖项。这是组合根。 当播放场景时,LifetimeScope会自动构建容器并将其分发到自己的PlayerLoopSystem中。:::note…

赶上AI的大潮:在VSCode中使用DeepSeek编程的极简方法

1 赶上AI的大潮:在VSCode中使用DeepSeek编程的极简方法 1.1 背景DeepSeek在春节期间突然大行其道,欣喜国力大增的同时,对于普通IT工作者,如何才能享受这一波AI红利,让自己的工作更出彩呢?  很多人在大量的宣传攻势下都知道了DeepSeek官网,然而当大家兴冲冲的来到DeepS…

about/VContainer是什么

VContainer import {BenchmarkGraph} from "../../src/components/BenchmarkGraph" import {GCAllocGraph} from "../../src/components/GCAllocGraph" VContainer 是 Unity 游戏引擎中极快的 DI(依赖注入)工具。"V" 意味着让 Unity 的初始 &q…

vue打包项目后,宝塔面板里的Nginx下的接口反向代理如何设置?

场景描述: vue开发H5页面过程中,需要用到加密解密接口,以及一系列反向代理配置。配置文件一般为——vue.config.js ; 如下:const path = require(path); let zipName = sdbf-h5; module.exports = {css: {loaderOptions: {sass: {implementation: require(sass), // 使用 d…

【Pytorch】深度学习-day01

【Pytorch2.0 版本介绍】- 是一个用于机器学习和深度学习的开源深度学习框架- 完全向下兼容,不论是新手,还是已经用过多年,有成熟项目,都可以完美升级到2.0 【安装-配置】下载地址:https://pytorch.org/ 版本选择:gpu/cpu版本,目前pytorch的gpu版本仅支持英伟达的显卡…

MyBatisCodeHelper Pro 3.2.4激活

去Jetbrains插件市场下载对应3.2.4版本 https://plugins.jetbrains.com/plugin/9837-mybatiscodehelperpro/versions/stable 2.安装 英文中文翻译3.下载jar包 https://i-blog.csdnimg.cn/direct/03908cc038b14bc2a0a2555c63226b4b.gif (来源:https://blog.csdn.net/GOODter/ar…

《Indie Tools • 半月刊》第001期

《INDIE TOOLS》专注于分享独立开发出海精选、最新、最实用的工具。 欢迎订阅半月刊:《INDIE TOOLS • 半月刊》 如果本文能给你提供启发和帮助,感谢各位小伙引言:独立开发者工具分享 《INDIE TOOLS》专注于分享独立开发出海精选、最新、最实用的工具。 欢迎订阅半月刊:《I…

在QJ7 手动执行自动化测试

https://wiki.one.int.sap/wiki/display/Joule/Development-+and+Test-Landscape 1: 申请加入user group 2: 使用joule login 查看登录到central joule instance的信息。 点击 service key 的URL, 查看service key和 secret 3: 登录 central joule instance4: 执行测试:本…

Dynamics 365 Online通过OAuth 2 Client Credential授权(Server-to-Server Authentication)后调用Web API

本文很多内容来自 John Towgood 撰写的 Dynamics 365 Online Authenticate with Client Credentials ,也着重参考了官方的 Use Single-Tenant server-to-server authentication ,我根据新的Azure Portal界面做了一些操作上的变化,并且改了一些代码,还使用ADAL来简化代码。 …

【转载】在Visual Studio 2015中添加报表功能 (使用 VS2015打开c#项目,新建文件没有报表选项,或者打开已有的wsdl不能打开设计器 )

Visual Studio 2015默认安装时没有报表,这时需要添加Microsoft Office 开发人员工具、Microsoft SQL Server Data Tools选项,安装之后就可以显示报表了,具体操作如下。方法/步骤 双击Visual Studio 2015的安装程序图标,启动软件安装向导。 在Visual Studio软件安装向导对话…