PAT (Advanced Level) Practice 1046 Shortest Distance (20 分) 凌宸1642

题目描述:

The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed to tell the shortest distance between any pair of exits.

译:你的任务很简单:给定 N 个出口,形成一个简单的圆形公路,你应该说出任意一对出口之间的最短距离。


Input Specification (输入说明):

Each input file contains one test case. For each case, the first line contains an integer N (in [3,105]), followed by N integer distances D1 D2 ⋯ DN, where Di is the distance between the i-th and the ( i +1 )-st exits, and DN is between the N-th and the 1st exits. All the numbers in a line are separated by a space. The second line gives a positive integer M (≤104), with M lines follow, each contains a pair of exit numbers, provided that the exits are numbered from 1 to N. It is guaranteed that the total round trip distance is no more than 107.

译:每个输入文件包含一个测试用例,每个用例在第一行中包含一个正整数 N ( 3 ≤ N ≤10 5 ) , 紧跟着 N 个表示距离的整数 D1 D2 ⋯ DN , Di 表示 第 i 个 出口到第 i + 1 个出口之间的距离, DN 表示第 N 个出口到第 1 个出口之间的距离。所有的数字被一个空格分隔。第二行给出一个正整数 M (≤104) , 接下来 M 行,每行包含一对出口的编号,保证出口在 1 ,N之间。题目保证整个环道的距离不超过 107


Output Specification (输出说明):

For each test case, print your results in M lines, each contains the shortest distance between the corresponding given pair of exits.

译:对于每个测试用例,在 M 行中打印相应那对出口之间的最短距离 。


Sample Input (样例输入):

5 1 2 4 14 9
3
1 3
2 5
4 1

Sample Output (样例输出):

3
10
7

The Idea:

本题的最短距离还算简单。我们只需要一个 数组存储 第 1 个出口 到 第 i 个出口之间的距离。然后求两个出口之间的距离,就变成了简单的减法问题,由于是一个环道,最短距离需要考虑在两个距离之间抉择:a 到 b 的距离 和整个环道的距离 减去 a 到 b 的距离 。


The Codes:

#include<bits/stdc++.h>
using namespace std ;
#define MAX 100010
int sum[MAX] = { 0 } ;
int n , m , t , a , b ;
int main(){
scanf("%d" , &n) ;
for(int i = 1 ; i <= n ; i ++){
scanf("%d" , &t) ;
sum[i] = sum[i-1] + t ; // 计算 第 1 个出口 到 第 i 个出口之间的距离。
}
scanf("%d" , &m) ;
while(m --){
scanf("%d%d" , &a , &b) ;
if(a > b) swap(a , b) ; // 如果 a 大于 b 就交换一下
cout<<min(sum[b - 1] - sum[a - 1] , sum[n] - (sum[b - 1] - sum[a - 1]))<<endl ;
}
return 0;
}

PAT (Advanced Level) Practice 1046 Shortest Distance (20 分) 凌宸1642的更多相关文章

  1. PAT (Advanced Level) Practice 1042 Shuffling Machine (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1042 Shuffling Machine (20 分) 凌宸1642 题目描述: Shuffling is a procedure us ...

  2. PAT (Advanced Level) Practice 1041 Be Unique (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1041 Be Unique (20 分) 凌宸1642 题目描述: Being unique is so important to peo ...

  3. PAT (Advanced Level) Practice 1015 Reversible Primes (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1015 Reversible Primes (20 分) 凌宸1642 题目描述: A reversible prime in any n ...

  4. PAT (Advanced Level) Practice 1152 Google Recruitment (20 分)

    In July 2004, Google posted on a giant billboard along Highway 101 in Silicon Valley (shown in the p ...

  5. PAT (Advanced Level) Practice 1120 Friend Numbers (20 分) (set)

    Two integers are called "friend numbers" if they share the same sum of their digits, and t ...

  6. PAT (Advanced Level) Practice 1015 Reversible Primes (20 分)

    A reversible prime in any number system is a prime whose "reverse" in that number system i ...

  7. PAT (Advanced Level) Practice 1035 Password (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1035 Password (20 分) 凌宸1642 题目描述: To prepare for PAT, the judge someti ...

  8. PAT (Advanced Level) Practice 1031 Hello World for U (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1031 Hello World for U (20 分) 凌宸1642 题目描述: Given any string of N (≥5) ...

  9. PAT (Advanced Level) Practice 1027 Colors in Mars (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1027 Colors in Mars (20 分) 凌宸1642 题目描述: People in Mars represent the c ...

随机推荐

  1. 电信悦 me 智能网关

    电信悦 me 智能网关 悦 me 智能网关 Q1:什么是电信悦 me 智能网关? 悦me网关是智慧家庭的核心终端,作为"光猫+智能路由器"的集合体, 采用了全新的硬件.外观及智能操 ...

  2. SameSite & Cookies

    SameSite & Cookies SameSite=None && Secure (HTTPS) https://developer.mozilla.org/en-US/d ...

  3. Flutter 获取本地图片并剪切

    安装依赖 dependencies: ... image_picker: image_cropper android\app\src\main\AndroidManifest.xml 将UCropAc ...

  4. 「NGK每日快讯」2021.2.7日NGK公链第96期官方快讯!

  5. django学习-1.开始hello world!

    1.前言 当你想走上测试开发之路,用python开发出一个web页面的时候,需要找一个支持python语言的web框架.django框架有丰富的文档和学习资料,也是非常成熟的web开发框架,想学pyt ...

  6. 【Android初级】如何实现一个有动画效果的自定义下拉菜单

    我们在购物APP里面设置收货地址时,都会有让我们选择省份及城市的下拉菜单项.今天我将使用Android原生的 Spinner 控件来实现一个自定义的下拉菜单功能,并配上一个透明渐变动画效果. 要实现的 ...

  7. MySQL 事务的隔离级别

    转载:https://developer.aliyun.com/article/743691?accounttraceid=80d4fddb3dc64b97a71118659e106221tozz 简 ...

  8. Docker SDK for Python

    一.概述 Docker引擎API的Python库.它允许您执行docker命令所做的任何操作,但可以在Python应用程序中运行容器.管理容器.管理群集等. 官方文档: https://docker- ...

  9. docker启动ubuntu的桌面环境

    一.概述 由于最近一段时间在家办公,国内服务器在阿里云,国外站点在aws.家里的移动宽带比较差,无法访问aws. 所以尝试在阿里云启动docker,找到一个lxde桌面环境的ubuntu镜像. 二.启 ...

  10. APP跳转小程序,小程序跳转APP

    关注公共号,搜索 "APP跳转小程序,小程序跳转APP",查看原文 前置条件: 开发环境:windows 开发框架:uni-app , H5+,nativeJS,mpvue 编辑器 ...