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

CF2121A Letter Home

CF2121A Letter Home - 洛谷

题目描述
已知一个长度为 n 的数组 A 和一个整数 s。(保证数组 A 中元素不相同)
起初,你在数轴上的位置 s,每一步你可以向左或向右移动一个单位长度。请你求出在整个移动过程中,将数组 A 中的每个位置至少访问一次的最小移动步数。
请注意,初始位置 s 也被视为已访问。

输入格式
每个测试用例由 T 测试数据组成。
第一行包含一个整数 T(1≤T≤1000)。
每个测试用例的第一行包含两个整数 n 和 s(1≤n≤10,1≤s≤100),第二行包含 n 个整数 ai​(1≤ai​≤100)。
保证数组 A 升序。

输出格式
对于每个测试用例,输出满足要求的最小移动步数。

输入输出样例
输入 #1

12
1 1
1
1 2
1
1 1
2
2 1
2 3
2 1
2 3
2 2
1 3
2 3
1 2
3 1
1 2 3
3 2
1 3 4
3 3
1 2 3
4 3
1 2 3 10
5 5
1 2 3 6 7
6 6
1 2 3 9 10 11


输出 #1

0
1
1
2
3
2
4
2
11
8
15

说明 / 提示
用例 1:不需要执行任何步骤。
用例 2:可以采取以下路径:2→1,步数为 1。
用例 3:可以采取以下路径:1→2,步数为 1。
用例 5:可以采取以下路径:2→1→2→3,步数为 3。

思路:

题目给出的s,是数轴上的坐标。数组a是给的每一个位置的坐标。所以我们要特判s是否在l~r的范围。画数轴就可以。
代码:

#include<bits/stdc++.h>
using namespace std;
int T;
int main(void)
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> T;while(T--){int n,s;cin >> n >> s;vector <int> a(n+1);for(int i = 1 ; i <= n ; i ++)cin >> a[i];int L = a[1],R = a[n];int steps;if(s >= L && s <= R){steps = (R - L) + min(s - L, R - s);}else if(s < L){steps = R - s;}else if (s > R){steps = s - L;}cout << steps << '\n';}return 0;} 

http://www.dtcms.com/a/336410.html

相关文章:

  • python pandas库 series如何使用
  • DNS总结
  • JDK21 虚拟线程详解【结合源码分析】
  • 弹性布局 Flexbox
  • BEVFusion(2022-2023年)版本中文翻译解读+相关命令
  • Java项目架构设计:模块化、分层架构的实战经验
  • Linux(十六)——top命令详解
  • wrap go as a telnet client lib for c to implement a simple telnet client
  • 堆的实际应用场景
  • 【Virtual Globe 渲染技术笔记】8 顶点变换精度
  • C11期作业17(07.05)
  • Microsoft WebView2
  • AMBA-AXI and ACE协议详解(十)
  • Rust:DLL 输出对象的生命周期管理
  • 影刀初级B级考试大题2
  • STM32CUBEMX配置stm32工程
  • Linux学习-多任务(线程)
  • LangChain4j
  • 三分钟在VMware虚拟机安装winXP教程,开箱即用
  • HTTP0.9/1.0/1.1/2.0
  • linux下timerfd和posix timer为什么存在较大的抖动?
  • USB-A 3.2 和 USB-A 2.0的区别
  • 集成电路学习:什么是ORB方向性FAST和旋转BRIEF
  • 外贸电商选品方案的模型
  • 天地图应用篇: 增加缩放、比例尺控件
  • 集运业务突围:三大关键问题的智能化解决方案
  • 【数据结构与算法-Day 16】队列的应用:广度优先搜索(BFS)的基石与迷宫寻路实战
  • vulnhub-lampiao靶机渗透
  • 002.Redis 配置及数据类型
  • 安装pytorch3d后报和本机cuda不符