(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);
}