1046. Shortest Distance (20)

来源:互联网 发布:北京亚信智慧数据 编辑:程序博客网 时间:2024/06/01 19:34

IDEA:

求圆环中两点距离最短

1.时间限制是考查点;

2.在输入两点之间距离的同时,计算每个点到点1 的距离

3.计算两点间的最短距离,正向(或反向)的大个最短,如圆环总长-正向距离=反向距离。


CODE

#include<iostream>#include<cstdio>#include<vector>#include<fstream>using namespace std;int main(){#ifndef ONLINE_JUDGEfreopen("input.txt","r",stdin);#endifint n,m;scanf("%d",&n);vector<int> dis(n+1);int sum=0;for(int i=1;i<=n;i++){int d;scanf("%d",&d);dis[i]=sum;sum+=d;}scanf("%d",&m);for(int i=0;i<m;i++){int st,end;scanf("%d %d",&st,&end);int mindis;if(st>end){mindis=dis[st]-dis[end];}else{mindis=dis[end]-dis[st];}if(sum-mindis<mindis){printf("%d\n",sum-mindis);}else{printf("%d\n",mindis);}}#ifndef ONLINE_JUDGEfclose(stdin);#endifreturn 0;}


0 0
原创粉丝点击