关闭

PAT 1046. Shortest Distance (20)

标签: pat
169人阅读 评论(0) 收藏 举报
分类:

模拟 10^4 * 10^5 会超时,通过设置一个0点,通过计算每个点到0的距离,两点之间的最短距离只需要相减就可以了。
代码如下:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
  int n;
  while(cin>>n)
  {
    int d[100005],dis;
    d[0] = 0;
    for(int i = 1; i <= n; i++)
    {
    cin>>dis;
    d[i] = d[i-1] + dis;
  }
    int m;
    cin>>m;
    while(m--)
    {
      int a,b;
      cin>>a>>b;
      if(a>b)
      {
        int temp = a;
        a = b;
        b = temp;
      }
    int min = d[b-1] - d[a-1];
    if(min < d[n] - min)
      cout<<min<<endl;
    else
      cout<<d[n] - min<<endl;
    }
  }
  return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21974次
    • 积分:670
    • 等级:
    • 排名:千里之外
    • 原创:46篇
    • 转载:35篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论