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

CodeForces.1806A .平面移动.[简单][判断可达范围][找步数规律]

题目描述:


题目解读:

给定移动规则以及起始点,终点;分析终点是否可达,可达则输出最小步数。


解题思路:

首先要判定是否可达。画图可知,对于题目给定的移动规则,只能到达起始点(a,b)的第一象限和第二象限的上半部分。

因此对于输入的终点(c,d),构建判断语句:如果(c,d)在(a,b)的三四象限,即 d>b,不可达。如果(c,d)在(a,b)的第二象限下半部分,即 c>a && d>=b && c-a>d-b 时,也不可达。

其余可达的点计算最小路径。题目给定的移动方式是向左平移或者向右对角线移动。

我的思路是先走右对角到达终点同一高度(如果终点和起点y坐标相同则省略该步),然后左移即可。(这个思路是经过计算的,即使终点在起点的第一象限,先到右对角线再左移 和 先向左移然后通过·右对角线不断靠近,所需步数是一样的。)

从(a,b)到(c,d),先走右对角线,到达(a+d-b,d),然后向左移动到(c,d)即可。

到达(a+d-b,d)需要d-b步,移动到(c,d)需a+d-b-c步,共需要d-b+a+d-b-c


代码实现:

//判断能否按题目要求进行移动,能的话给出最小步数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>void Solve() {int a,b,c,d;scanf("%d%d%d%d", &a,&b,&c,&d);if (b>d || (c>a && d>=b && c-a>d-b)){printf("%d\n",-1);}else printf("%d\n", (d-b)+ (a+d-b)-c );return;
}int main() {int t;scanf("%d", &t);while (t--) Solve();return 0;
}

遇到的错误:求解移动步数的时候容易卡壳。

http://www.lryc.cn/news/70293.html

相关文章:

  • Linux系统编程学习 NO.4 ——基础指令学习、操作系统时间的概念、文件压缩包的概念
  • leecode 数据库:601. 体育馆的人流量
  • gym不渲染画面的解决方案(gym版本号0.26.2)
  • 如何在 Fedora 37 上安装 FileZilla?
  • 网终安全技术(刘化君)课后被略的答案
  • 架构思想之DDD
  • FinClip | 2023 年 4 月产品大事记
  • 试论什么是圣人境界
  • 在外远程登录局域网下的象过河ERP管理系统,无需公网IP
  • golang 服务中 context 超时处理的思考
  • 遇到Uniapp配置meta不生效怎么解决
  • C语言基础知识:位与位字段
  • 新版android studio gradle插件7.4.2.pom一直无法下载问题
  • Shell——变量和引用
  • 实际开发中一些实用的JS数据处理方法
  • 10:00进去,10:05就出来了,这问的也太变态了···
  • GPT时代,最令人担心的其实是“塔斯马尼亚效应”
  • 基于容器技术和服务发现的全新大数据平台弹性伸缩方法
  • php8 match
  • ADS-B接收机Radarcape
  • 软件测评师2012年下半年考试真题<更新中。。。>
  • ChatGPT 使用 拓展资料:开始构建你的优质Prompt
  • Hystrix原理
  • 内网外网分离模式下,通过网关转发,来部署前后端分离的系统
  • 基于 Amazon API Gatewy 的跨账号跨网络的私有 API 集成
  • SSH远程连接时报错kex_exchange_identification: Connection closed by remote host
  • 一、CNNs网络架构-基础网络架构
  • [开发|C++] C++的基本运算符说明笔记
  • 抖音定位功能的作用
  • 阿里 P9 推荐的 Spring 领域巅峰之作,直接颠覆了我对 Spring 的认知