(纪中)2189. marathon

57 篇文章 0 订阅

(File IO): input:marathon.in output:marathon.out
时间限制: 1000 ms 空间限制: 262144 KB 具体限制
Goto ProblemSet


题目描述
地图上有 N N N 个城市,一只奶牛要从 1 1 1 号城市开始依次经过 N N N 个城市,最终到达 N N N 号城市。但是这只奶牛觉得这样太无聊了,所以它决定跳过其中的一个城市(但是不能跳过 1 1 1 号和 N N N 号城市),使得它从 1 1 1 号城市开始,到达 N N N号城市所经过的总距离最小。每一个城市都有一个坐标,从城市 ( x 1 , y 1 ) (x1, y1) (x1,y1)到城市 ( x 2 , y 2 ) (x2, y2) (x2,y2) 的距离为 ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ |x1 - x2| + |y1 - y2| x1x2+y1y2


输入
第一行一个数 N N N,表示城市个数
接下一行 N N N行每行两个数 x , y x,y x,y,表示每个城市的坐标

输出
一行一个数 a n s ans ans, 使得它从 1 1 1 号城市开始,跳过某一个城市,到达 N N N 号城市所经过的总距离最小


样例输入
4
0 0
8 3
11 -1
10 0

样例输出
14


数据范围限制
• 对于 40 40 40% 的数据, N < = 1000 N <= 1000 N<=1000
• 对于 100 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,-10^3 <= x <= 10^3,-10^3 <= y <= 10^3 3<=N<=105103<=x<=103103<=y<=103


提示
跳过 2 2 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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值