• 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;
    }
    

      

  • 相关阅读:
    博客园Js设置
    springboot练习笔记
    相关的其他文件
    设计模式之----代理模式
    JSP的四种范围
    io流读写及相关内容
    缓存
    gson解析json
    Android简单获得通讯录
    android服务之一 Service
  • 原文地址:https://www.cnblogs.com/championlai/p/4099606.html
Copyright © 2020-2023  润新知