CF709B 题解
本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读。
题目简述
给定 \(N\) 个点,在一条数轴上,位置为 \(x_1,…,x_n\),你的位置为 \(p\),你要经过 \(N-1\) 个点,求至少要走的距离。
思路
首先因为输入是乱序的,所以需要由小到大排序。
又因为需要经过 \(N-1\) 个点,所以要么不走左端点,要么不走右端点,这样分两种情况讨论,分别求出答案取 \(\min\) 即可。
首先分析情况 \(1\),要么 \(p \le a_2 \le a_n\),要么 \(a_2 \le p \le a_n\),要么 \(a_2 \le a_n \le p\),第二种不论先去 \(a_2\) 还是 \(a_n\) 结果都一样。所以不讨论,第一三种需要讨论一下,对于第一种一定是先去 \(a_2\) 结果最小, 对于第三种一定是先去 \(a_n\) 结果最小,只需对这两种分别处理最后取 \(\min\) 即可,由此分析可得这种情况的方程式为:
\]
同样分析可得情况 \(2\) 的方程式:
\]
最后对两种情况取 \(\min\) 即可。
经过以上分析,很容易即可得出代码了:
#include<iostream>
#include<algorithm>
using namespace std;
int n, a[100005], p;
long long ans = 0x3f3f3f3f; // 要取 min 所以需初始化一个较大数
int min(int x, int y) { return (x < y) ? x : y; }
int abs(int x) { return (x > 0) ? x : -x; }
int main(){
cin >> n >> p;
if(n == 1) { cout << "0\n"; return 0; } // 特判
for(int i = 1; i <= n; i ++) cin >> a[i];
sort(a + 1, a + n + 1); // 因为是乱序,所以需要排序
long long num1 = 0, num2 = 0; // 可不开 long long
// 情况 1
num1 = min(abs(a[n] - p) + abs(a[n] - a[2]), abs(a[2] - p) + abs(a[n] - a[2]));
// 情况 2
num2 = min(abs(a[n - 1] - p) + abs(a[n - 1] - a[1]), abs(a[1] - p) + abs(a[n - 1] - a[1]));
ans = min(num1, num2); // 答案取 min
cout << ans << endl; // 输出,换行好习惯
return 0;
}
提交记录:

\]
CF709B 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- YiShaAdmin:一款基于.NET Core Web + Bootstrap的企业级快速开发框架
前言 今天大姚给大家分享一款基于.NET Core Web + Bootstrap的企业级快速后台开发框架.权限管理系统,代码简单易懂.界面简洁美观(基于MIT License开源,免费可商用):Yi ...
- Ceph 架构以及部署
目录 Ceph架构 存储类型 为什么用到Ceph? 1. NFS 2. MooseFS MooseFS瓶颈 3. GlusterFS 4. Ceph Ceph的组件 Ceph部署 前期准备 1.1 修 ...
- 使用Harbor作为Rainbond默认容器镜像仓库,扩展Rainbond镜像管理能力
Rainbond是一体化的云原生应用管理平台,它提供"以应用为中心"的抽象,使用者不需要学习K8s和容器,平台将K8s和容器封装在内部,这种封装方式能极大提高使用的易用性和安装的便 ...
- 前端项目报EISDIR: illegal operation on a directory, read这个错误
背景: 我用webstorm开发前端页面时,项目用Vue3来开发,出现如下报错. 原因: 这个报错是由于代码中引入的一些组件或者模块路径不正确导致的,在vue2中,引入组件是下面这样写的: impor ...
- 前端性能优化的利器 ——— 浅谈JavaScript中的防抖和节流
防抖和节流函数是工作中两种常用的前端性能优化函数,今天我就来总结一下什么是防抖和节流,并详细说明一下如何在工作中应用防抖和节流函数 什么是防抖和节流? 在 JavaScript 中,防抖(deboun ...
- ABC332
D 我们可以把矩阵 \(\text{A}\) 看成 \({p,q}\). \(p\) 指现在一行最开始在哪里,\(q\) 指现在这一列最开始在哪里. 于是我们枚举 \(p\) 和 \(q\) 所有可能 ...
- PB通过OLE方式调用C#.NET DLL时,DLL获取自身根目录
PB通过OLE方式调用C#.NET DLL时, DLL获取自身根目录 System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExe ...
- Django路由层、视图层及模板层
Django路由层 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表; 你就是以这种方式告诉Django,对于客户端发来的某个UR ...
- ssh基础
SSH安全登录 机器准备 什么是SSH SSH 或 Secure Shell 协议是一种远程管理协议,允许用户通过 Internet 访问.控制和修改其远程服务器. SSH 服务是作为未加密 Teln ...
- ftl生成模板并从前台下载
1.生成模板的工具类 package com.jesims.busfundcallnew.util; import freemarker.template.Configuration; import ...