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

洛谷P2239题解

洛谷P2239题解

题目信息:

题目传送门:https://www.luogu.com.cn/problem/P2239
题目知识点:模拟,数学

分析1

第一个思路是绘图,从起点开始运动,每次运动到越界或者有赋过值的点就改变方向,这样的好处是不用考虑点具体的运动规律,但是很不幸maxn高达30000,如果真的用了这个方法只能和蒟蒻一样喜提MLE

参考代码


#include<cstdio>
const int maxn = 20005;
const int dx[4] = { 0,1,0,-1 };
const int dy[4] = { 1,0,-1,0 };int buf[maxn][maxn];
int n, i, j, flag;int main() {scanf("%d%d%d", &n, &i, &j);int v = 1;int x = 1, y = 1;for (int i = 1; i <= n * n; i++) {buf[x][y] = v++;x += dx[flag];y += dy[flag];if (x<1 || x>n || y<1 || y>n || buf[x][y]) {x -= dx[flag];y -= dy[flag];flag = (flag + 1) % 4;x += dx[flag];y += dy[flag];}}printf("%d\n", buf[i][j]);return 0;
}

分析2

想要找到i,j位置没有必要开一个表,分析运动路径即可
以n == 4为例子运动的长度为3 3 3 2 2 1 1,归纳发现除了第一次剩下的每有两次运动长度-1,而每次运动到头改变方向,由此可以写出代码

代码

#include<cstdio>
#define ll long long
int n, r ,c;
const int dx[4] = { 0,1,0,-1 };
const int dy[4] = { 1,0,-1,0 };
int x = 1, y = 1, dire;
ll v = 1;int main() {scanf("%d%d%d", &n, &r, &c);for (int i = 1; i < n; i++) {x += dx[dire];y += dy[dire];v++;if (x == r && y == c) {printf("%d\n", v);return 0;}}dire = 1;int t = n-1,cnt = 0,round=0;while (x!=r||y!=c) {x += dx[dire];y += dy[dire];cnt++; v++;if (cnt == t) {dire = (dire + 1) % 4;round++;if (round % 2 == 0)t--;cnt = 0;}}printf("%lld\n", v);return 0;
}

最后

屏幕截图 2026-03-12 221416

http://www.jsqmd.com/news/468824/

相关文章:

  • ubuntu22.04 安装部署 openclaw
  • static作用(修饰函数、局部变量、全局变量)
  • 如何突破Cursor AI试用限制:2025年多语言版Pro功能解锁全指南
  • 告别繁琐调轴:清音刻墨Qwen3智能字幕对齐系统快速上手攻略
  • Flutter 三方库 gettext_parser 的鸿蒙化适配指南 - 支持标准 PO/MO 翻译文件解析、高性能多语言资源转换
  • RAG 效果不好?90% 的人排查方向都错了
  • 【初学者入门C语言】之函数
  • 开源工具cursor-free-vip:突破Cursor功能限制的开发效率增强指南
  • MinIO 社区版被故意阉割,Web管理功能全面移除,来试试国产的RustFS?
  • CW2015电源管理芯片避坑指南:常见问题与解决方案
  • 行测高频成语:安之若素
  • YOLOv8训练-推理一体化:全流程部署指南
  • 养龙虾迅速走红!OpenClaw部署保姆级教程,两步解锁专属龙虾AI助理!
  • 机器人开发工程师:技术核心、挑战与人才甄选
  • 看了500份简历,被HR淘汰的就这3个问题!
  • Nodemailer使用教程:在Node.js中发送电子邮件
  • 3月12日(进阶4)
  • Redis 平替来了!SpringBoot 集成 Dragonfly,性能暴涨 25 倍
  • 今年NVIDIA GTC,将会是VLA、端到端和WAM的高光时刻
  • 请介绍下 C++ 模板中的 SFINAE?它的原则是什么?
  • Flutter 三方库 common_locale_data 的鸿蒙化适配指南 - 实现具备全球化区域元数据与多语言辅助能力的底层数据池、支持端侧国际化业务的精细化治理实战
  • 好奇Clawhub/Skillhub上的插件/Skills(案例一)
  • CMakeLists.txt配置详细介绍
  • openclaw使用笔记,如何启动
  • 图文手把手!小艺接入 OpenClaw 超简单
  • 0311晨间日记
  • 周鸿祎回应“龙虾安全”争议:它是好东西绝非病毒,不发展才是最大安全隐患
  • 搜维尔科技:使用Manus Pro数据手套在实验室远程操控22自由度机械手
  • Flutter 三方库 serial_csv 的鸿蒙化适配指南 - 实现极速的流式 CSV 数据编解码、支持端侧超大规模表格数据的高效序列化实战
  • Flutter 三方库 system_shortcuts 的鸿蒙化适配指南 - 实现快速触发系统级快捷功能、支持 WiFi 开关、亮度调节与系统设置一键直达