当前位置: 首页 > news >正文

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

题目分析:

  • 题目本身题意简单,模拟的逻辑用上一个dx,dy数组即可很好实现

  • 但是我一直在思考题目中说的如若人牛永远不相遇,则输出0,我想找一个限制条件来输出0,但是无从下手,是不是最后会循环回来,循环次数等等.这是我这道题目上思路卡的唯一地方,

    询问AI,AI是这样解释的,1. 设置最大步数阈值(最推荐,最简单)

    我们可以通过计算总状态数来确定一个安全上限。

    • Farmer John 的位置有 10×10=100 种,方向有 4 种。
    • 牛的位置有 10×10=100 种,方向有 4 种。
    • 总状态数= 100×4×100×4=160,000。

    这意味着,如果模拟超过 160,000 次移动后两人还没相遇,他们必然已经进入了一个永远不会相遇的循环。在实际竞赛中,为了稳妥,我们通常设定一个略大一点的数字,比如1,000,000

    大概懂了吧,感觉是像高中时算概率的分母的所有情况数字,以后也学习以下这种估计的思路.

  • 我的第一版代码,先判断了障碍物再判断了边界,这样由于||的短路机制,所以我的代码就会出现数组越界的情况(同样的,&&只要左边是false,右边连看都不看。)

代码

#include <bits/stdc++.h> using i64 = long long; int dx[] = {-1,0,1,0}; int dy[] = {0,1,0,-1}; int da[] = {-1,0,1,0}; int db[] = {0,1,0,-1}; void solve(){ std::vector<std::string> s(10); for(int i = 0; i < 10; ++i){ std::cin >> s[i]; } std::pair<int,int> c; std::pair<int,int> f; for(int i = 0; i < 10; ++i){ for(int j = 0; j < 10; ++j){ if(s[i][j] == 'C'){ c.first = i; c.second = j; } if(s[i][j] == 'F'){ f.first = i; f.second = j; } } } auto &[x,y] = c; auto &[a,b] = f; int fx = 0; int fx1 = 0; int m1 = 0; i64 mmax = 160000; while(c != f){ if(m1 > mmax){ std::cout << 0; return; } int nx = x + dx[fx]; int ny = y + dy[fx]; if(nx < 0 || nx > 9 || ny < 0|| ny > 9){ fx += 1; fx %= 4; } else { if(s[nx][ny] == '*'){ fx += 1; fx %= 4; } else{ x = nx; y = ny; } } int na = a + da[fx1]; int nb = b + db[fx1]; if(na < 0 || na > 9 || nb < 0|| nb > 9){ fx1 += 1; fx1 %= 4; } else { if(s[na][nb] == '*'){ fx1 += 1; fx1 %= 4; } else{ a = na; b = nb ; } } ++m1; } std::cout << m1; } int main(){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); solve(); return 0; }
http://www.gsyq.cn/news/1619817.html

相关文章:

  • 3分钟实现Unity游戏汉化:XUnity.AutoTranslator完整指南
  • ScratchJr桌面版:5-7岁儿童编程启蒙的3大突破性优势
  • 解密铜仁学院登陆算法
  • proxy.py:一个能替代 ngrok 的轻量级代理服务器
  • 【IDEA日志断点黑科技】:5分钟绕过断点阻塞,实现日志实时输出的3种权威方案
  • 终极指南:5步掌握网页资源智能捕获技术
  • 【限时技术白皮书】:基于237台生产虚拟机压测数据,提炼出VMware+GPU透传在ResNet50/BERT训练场景下的最优vCPU:GPU配比模型
  • 如何快速配置League Akari:英雄联盟智能助手的终极指南
  • 为什么你的IDEA永远抓不到Race Condition?揭秘JDK 17+与IDEA 2023.3线程事件监听底层差异
  • HunterPie终极指南:如何用实时数据监控提升《怪物猎人:世界》狩猎效率
  • 告别HttpCanary:基于Frida RPC与Burp Suite的安卓加密流量实时篡改实战
  • 手机号码定位系统:免费开源工具助你3秒掌握来电位置
  • 2026年7月份最新《墨香情》手游正版下载全指南 无职业武侠怀旧服新手入门与渠道避坑攻略
  • 【学习记录】Week5(二):无输出环境突破——Canary 盲爆破与 off-by-null 部分绕过
  • 为什么你的IDEA永远抓不到NullPointerException?——深入JVM JVMTI事件钩子与IntelliJ调试协议的兼容性断层(含官方未公开API调用日志)
  • 哔咔漫画下载器终极指南:5分钟打造个人离线漫画图书馆
  • 自动化越强,人为什么反而要更强:AI 质控中的自动化反讽
  • 英雄联盟回放管理的终极解决方案:ROFLPlayer完整指南
  • Windows 11终极清理指南:免费开源工具让你的系统性能飙升51%
  • 英雄联盟回放管理终极指南:ROFL播放器完整教程
  • 【限时技术透支】:VMware模板化Jenkins Master镜像制作全流程(含Ansible自动化打包+SHA256校验)
  • 【Vibe Coding从入门到精通】第14篇:Agentic Engineering——Vibe Coding的下一站
  • 企业级AI智能体落地实战:自主性、工具调用与治理架构
  • 如何利用Awesome-CGM数据集构建精准糖尿病预测模型:开发者完整实战指南
  • 连续血糖监测研究必备:Awesome-CGM数据集完全指南
  • 从 0 到 1 MCP 工具集实战:写一个能被 Claude Code 调用的工具
  • Windows 11优化指南:用免费工具提升51%性能的完整方案
  • Codeforces Round 1107 (Div. 3)DE
  • 告别单调墙面,铝单板如何让建筑焕发新生?
  • [智能体-619]:大模型做决策的最大特点是:场景性适应性、灵活性、应对不确定性、应对模糊性。在某种场合下是极致的优点,在某种场合下却是致命的缺点。就像人一样,不同场合,需要不同个性的人