3.1简单模拟A1046. Shortest Distance (20)
来源:互联网 发布:资深淘宝 天猫的访客 编辑:程序博客网 时间:2024/05/30 05:04
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.
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.
Output Specification:
For each test case, print your results in M lines, each contains the shortest distance between the corresponding given pair of exits.
Sample Input:
5 1 2 4 14 9
3
1 3
2 5
4 1
Sample Output:
3
10
7
#include <iostream>#include <stdio.h>#include <algorithm>using namespace std;/* 本题有难度,得经常看看,很容易忘记*/int main(){// int N=5; int N;//输入的个数; scanf("%d",&N);// int dis[N+1]={0},a[N+1]={0,1,2,4,14,9};//之所以用N+1,是计算a[1]的时候需要用a[0]来补充 int dis[N+1]={0},a[N+1]={0};//dis[N+1]存放的是第1个结点到第i个结点的下一个结点的距离,之所以下一个,考虑循环问题;a[N+1]表示相邻两结点的距离,a[1]表示结点1和结点2之间的距离 for(int i=1;i<=N;++i){ scanf("%d",&a[i]); } int sum=0; /* 一直报运行超时,参考答案用了很妙的方法,直接用动态的sum来算dis,这样就不用二重循环; for(int i=1;i<=N;++i){ sum+=a[i];//用来后期比较顺时针和逆时针的和大小 for(int j=1;j<=i;++j){ dis[i]+=a[j]; } } */ for(int i=1;i<=N;++i){ sum +=a[i]; dis[i]=sum; }// int M=3; int M;//需要比较的次数; scanf("%d",&M); int l,m;//存放输入的两个结点坐标; int p,q;//分别存放两点之间的顺时针距离和逆时针距离; int shortest=0; for(int i=1;i<=M;++i){ scanf("%d%d",&l,&m); if(l>m)swap(l,m); p = dis[m-1]-dis[l-1]; q=sum-p; shortest = min(p,q); printf("%d\n",shortest); } return 0;}
- 3.1简单模拟A1046. Shortest Distance (20)
- A1046. Shortest Distance (20)
- PAT A1046 Shortest Distance (20)
- 【PAT】A1046. Shortest Distance (20)
- PAT A1046. Shortest Distance (20)
- PAT-A1046 Shortest Distance(模拟)
- PAT A1046. Shortest Distance
- A1046.Shortest Distance
- PAT A1046 Shortest Distances
- 1046. Shortest Distance (20)
- 1046. Shortest Distance (20)
- 1046. Shortest Distance (20)
- 1046. Shortest Distance (20)
- 1046. Shortest Distance (20)
- 1046. Shortest Distance (20)
- 1046. Shortest Distance (20)
- 1046. Shortest Distance (20)
- 1046. Shortest Distance (20)
- Spring boot(一)
- 平衡二叉树(二叉树深度+DFS)
- C++ 头文件系列(vector)_0
- 串口DMA的应用
- C++从string中删除所有的某个特定字符
- 3.1简单模拟A1046. Shortest Distance (20)
- Policy-based data structures (GNC)系列译文总序
- The parent project must have a packaging type of POM
- 备忘
- 【Python】为图片加上数字上标
- Java---字节流与字符流
- Codeforces 498D Unbearable Controversy of Being(暴力求菱形个数)
- Codeforces Round #142 (Div. 1) C. Triangles 数学,完全图,统计贡献 2017/1/25
- openMP并行程序设计基础1