(紀中)2189. marathon

(File IO): input:marathon.in output:marathon.out
時間限制: 1000 ms 空間限制: 262144 KB 具體限制
Goto ProblemSet


題目描述
地圖上有NN 個城市,一隻奶牛要從11 號城市開始依次經過NN 個城市,最終到達NN 號城市。但是這隻奶牛覺得這樣太無聊了,所以它決定跳過其中的一個城市(但是不能跳過11 號和NN 號城市),使得它從11 號城市開始,到達NN號城市所經過的總距離最小。每一個城市都有一個座標,從城市(x1,y1)(x1, y1)到城市(x2,y2)(x2, y2) 的距離爲 x1x2+y1y2|x1 - x2| + |y1 - y2|


輸入
第一行一個數NN,表示城市個數
接下一行NN行每行兩個數x,yx,y,表示每個城市的座標

輸出
一行一個數ansans, 使得它從11 號城市開始,跳過某一個城市,到達NN 號城市所經過的總距離最小


樣例輸入
4
0 0
8 3
11 -1
10 0

樣例輸出
14


數據範圍限制
• 對於4040% 的數據,N<=1000N <= 1000
• 對於100100% 的數據,3<=N<=105103<=x<=103103<=y<=1033 <= N <= 10^5,-10^3 <= x <= 10^3,-10^3 <= y <= 10^3


提示
跳過22 號城


解題思路
直接暴力枚舉。。。


代碼

#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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章