(Jizhong) 2189 마라톤

(파일 IO) : 입력 : marathon.in 출력 : marathon.out
시간 제한 : 1000 MS 공간 제약 : 262,144킬로바이트의 특정 제한
고토 ProblemSet


제목 설명
지도가 도시, 암소에서 1 1 순차 번호를 통한 도시 도시, 그리고 마지막에 도시의 수. 하지만 소이 너무가있는 도시를 생략하기로 결정, 그래서 지루하다 (하지만 건너 뛸 생각 1 1 개수 및 그것은 그러한 행 번호 변경) 1 1 번호 도시에 도착하기 시작했다 통해 총 거리 도시 최소 개수. 모든 도시는 도시에서, 좌표있다 ( 엑스 1 , 1 ) (X1, Y1) 도시로 ( 엑스 , ) (X2, Y2) 거리 | 엑스 1 - 엑스 | + | 1 - | | X1 - X2 | + | Y1 - Y2 | .


입력
첫 번째 행의 수를 , 도시의 수를
다음 라인은 개의 행의 각 행 엑스 , X, Y 각 도시의 좌표를 나타냅니다

출력
라인 번호 에스 로부터이를되도록, 1 1 번호 도시는 어떤 도시를 생략하기 시작 도착 도시 수있는 최소 전체 거리를 통해


샘플 입력
. 4
0 0
. 제 3
. 11 -1
10 0

출력 샘플
(14)


데이터 범위 제한
• 들어 (40) (40) 데이터 % < = 1000 N은 <1000 = .
• 들어 100 (100) 데이터 % 3 < = N < = 1 0 5 1 0 3 < = x < = 1 0 3 1 0 3 < = y < = 1 0 3 3 <= N <= 10 ^ 5 ^ 3 -10 <= X <= 10 ^ 3 ^ 3 -10 <= Y <= 10 ^ 3 .



건너 뛰기 2 하오 도시


문제 해결 아이디어를
직접 폭력을 열거합니다. . .


코드

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,a[100010][3],n,minn,ans,t;
int main(){
	freopen("marathon.in","r",stdin);
    freopen("marathon.out","w",stdout);
    scanf("%d",&n);
    minn=2147483647;
    for(int i=1;i<=n;i++)
    {
    	scanf("%d%d",&a[i][1],a[i][2]);
    	t=t+abs(a[i-1][1]-a[i][1])+abs(a[i-1][2]-a[i][2]);
	}
	for(int i=1;i<=n;i++)
	{
		ans=s-(abs(a[i][1]-a[i-1][1])+abs(a[i][2]-a[i-1][2]))-(abs(a[i][1]-a[i+1][1])+abs(a[i][2]-a[i+1][2]))+(abs(a[i-1][1]-a[i+1][1])+abs(a[i-1][2]-a[i+1][2]));
    	if(ans<minn)
    		minn=ans;
	}
	printf("%d",minn);
}
게시 된 119 개 원래 기사 · 원 찬양 8 · 전망 4930

추천

출처blog.csdn.net/kejin2019/article/details/104685142