zoukankan      html  css  js  c++  java
  • PAT-1046 Shortest Distance (20)

    这道题目开始时以每次查询都去遍历一遍,往两个方向搜索,会超时,即使减掉一些情况。

    考虑过用二维数组发现10^5*10^5,编译会报数组太大的错误,这个比较奇怪,在全局变量不是都是在对上分配吗?按理来说可以无限大啊。待考察

    // 1046.cpp : 定义控制台应用程序的入口点。
    //
    //用一维数组来记录二维数组的信息,sum[j]-sum[i]就是sum[i][j]信息
    #include "stdafx.h"
    #include<stdio.h>
    #define MIN(a,b) a<b?a:b
    int data[100010];
    int sum[100010];
    int total;
    
    int main()
    {
    	int n;
    	int count;
    	freopen("1046.txt","r",stdin);
    	while(scanf("%d",&n)!=EOF)
    	{
    		total=0;
    		for(int i=0;i<n;i++)
    		{
    			scanf("%d",&data[i]);
    			total+=data[i];
    			sum[i]=total;//一维数组记录总和
    		}
    		scanf("%d",&count);
    		int start,end;
    		for(int j=0;j<count;j++)
    		{
    			scanf("%d%d",&start,&end);
    			int min=start>end?end:start;
    			int max=start<end?end:start;
    			int tmp=sum[max-2]-sum[min-1]+data[min-1];
    			tmp=tmp<0?0-tmp:tmp;
    			printf("%d
    ",MIN(total-tmp,tmp));
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    改造二叉树
    汽车加油行驶问题
    [SHOI2012]回家的路
    子串
    P3558 [POI2013]BAJ-Bytecomputer
    HDU
    UVALive
    ZOJ
    HDU
    牛客小白月赛2 题解
  • 原文地址:https://www.cnblogs.com/championlai/p/4099606.html
Copyright © 2011-2022 走看看