PAT 1046. Shortest Distance (20)

模拟 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;
}
阅读更多
文章标签: pat
个人分类: PAT
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

PAT 1046. Shortest Distance (20)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭