(File IO): input:marathon.in output:marathon.out
时间限制: 1000 ms 空间限制: 262144 KB 具体限制
Goto ProblemSet
题目描述
地图上有
个城市,一只奶牛要从
号城市开始依次经过
个城市,最终到达
号城市。但是这只奶牛觉得这样太无聊了,所以它决定跳过其中的一个城市(但是不能跳过
号和
号城市),使得它从
号城市开始,到达
号城市所经过的总距离最小。每一个城市都有一个坐标,从城市
到城市
的距离为
。
输入
第一行一个数
,表示城市个数
接下一行
行每行两个数
,表示每个城市的坐标
输出
一行一个数
, 使得它从
号城市开始,跳过某一个城市,到达
号城市所经过的总距离最小
样例输入
4
0 0
8 3
11 -1
10 0
样例输出
14
数据范围限制
• 对于
% 的数据,
。
• 对于
% 的数据,
。
提示
跳过
号城
解题思路
直接暴力枚举。。。
代码
#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);
}