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 ...
随机推荐
- 企业生产环境中的麒麟V10(ARM架构)操作系统部署jdk和redis三主三从交叉版集群
前言:麒麟ARM操作系统是国企和政务机关推行信创化选择率比较高的一款操作系统,然而ARM操作系统非主流的X86系统,除了命令一样,在架构方面差别极大,初次接触多多少少会踩坑,下面我将在公司中部署的实例 ...
- Git三大区域
1.工作区 2.暂存区 3.版本库
- 记一次Idea无法打开记录(idea升级)
记一次Idea无法打开记录 前言,本来今天是打算升级Idea,然后体验一波的,结果升级完之后,发现无法打开idea(双击之后并没有任何打开的反应). 原因排查,打开idea所在目录,找到idea.ba ...
- python中datetime的常用操作
datetime是用于处理日期和时间的模块,一些常用的操作可通过提供的基本函数实现.引入模块--import datetime. 1.datetime转字符串--strftime()函数 有两种写法: ...
- 后端返回html字符串 样式覆盖全局必须用 iframe嵌套显示才行
后端返回html字符串 样式覆盖全局必须用 iframe嵌套显示才行 $.axios({ method: "POST", url: progre ...
- C# .NET 拉卡拉支付接口解析 付款码支付 条码支付
C# .NET 拉卡拉支付接口解析 付款码支付 条码支付 被扫 反扫 刷卡支付 B扫C. 简要: 1.测试环境给的私钥是PKCS8.签名用. 2.CRT证书用X509Certificate2 读取出 ...
- Java服务发起HTTPS请求报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
Java服务发起HTTPS请求报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExcept ...
- 搭建第一个web项目
实现使用: 1.创建一个普通java文件 2.Java文件的类名实现HttpServlet 3.重写service方法 4.在WEB-INF下的web.xml中添加请求与servlet类的映射关系 定 ...
- 关于java时间类型和格式化到微秒问题
常规的问题此处略,因为网络上到处都是,这里主要讨论三个问题: 1.数据库的时间戳类型(含微秒)对应java的什么类型 java的常见时间类型比较多: java.util.Date java.sql.D ...
- python重拾第五天-常用模块学习
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...