1046. Shortest Distance (20)

原创 2015年11月20日 00:06:33

1.建立一个数组dp[i],记录0到i之间的距离和

2.定义sum,记录全程的路程和

3.求i,j的最短距离时,利用ans=dp[j]-[i]+num[i]-num[j],ans2=sum-ans,min(ans,ans2)即为答案


AC代码:

#include <iostream>
#include <stdio.h>
#include <vector>
#include <stack>
#include <algorithm>
#include <memory.h>
#include <map>
#include <set>
#include "limits.h"
using namespace std;

int main(void)
{
    
    int n;
    scanf("%d",&n);
    int *num=new int[n];
    int *dp=new int[n];
    memset(dp, 0, sizeof(dp));
    int sum=0;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&num[i]);
        if(i==0) dp[i]=num[i];
        else dp[i]=dp[i-1]+num[i];
        sum+=num[i];
    }
    int m;
    scanf("%d",&m);
    for(int i=0;i<m;i++)
    {
        int a,b;
        scanf("%d %d",&a,&b);
        if(a>b) swap(a,b);
        int tmp=dp[b-1]-dp[a-1]+num[a-1]-num[b-1];
        int tmp2=sum-tmp;
        printf("%d\n",min(tmp2,tmp));
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

pat1046Shortest Distance (20)

题意分析: (1)给出一个环形公路中几个相邻出口之间的距离,然后任意给出若干对出口,求出这些出口之间最短的距离,(即从一个出口沿着两个方向到达另外一个出口的最短距离) (2)建议大家画一个示意图,分别...

PAT 1046. Shortest Distance (20)

1046. Shortest Distance (20) 浙大PAT The task is really simple: given N exits on a highway which forms...
  • ZJFCLH
  • ZJFCLH
  • 2014年03月17日 16:21
  • 809

pat 1046. Shortest Distance (20)

1046. Shortest Distance (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standa...
  • wyh7280
  • wyh7280
  • 2015年07月19日 10:42
  • 304

1046. Shortest Distance (20)

The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed t...
  • zjujqq
  • zjujqq
  • 2013年08月28日 00:01
  • 420

1046. Shortest Distance (20)-PAT甲级

题目:The task is really simple: given N exits on a highway which forms a simple cycle, you are suppose...

PAT A1046 Shortest Distance (20)

题目地址:https://www.patest.cn/contests/pat-a-practise/1046题目描述:The task is really simple: given N exits...

PAT-A 1046. Shortest Distance (20)

PAT甲级 1046 Shortest Distance

浙江大学PAT_甲级_1046. Shortest Distance (20)

C++

PAT A1046. Shortest Distance

The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed t...

PAT 1046 Shortest Distance

最淳朴的想法,把两个出口,正向走,方向走的距离都累加求和算出来,然后比较输出较小的 #include #include using namespace std; int main() { int...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1046. Shortest Distance (20)
举报原因:
原因补充:

(最多只允许输入30个字)