Vacances d'hiver 2020 【gmoj2189】 【marathon】 【Mathématiques】 【Simulation】

Description du titre

Il y a N villes sur la carte. Une vache doit passer par N villes dans l'ordre de la ville 1 et finalement atteindre la ville N. Mais la vache pensait que c'était trop ennuyeux, elle a donc décidé de sauter l'une des villes (mais pas les villes 1 et N) pour qu'elle parte de la ville 1 et ait la plus petite distance totale pour atteindre la ville N . Chaque ville a une coordonnée et la distance de la ville (x1, y1) à la ville (x2, y2) est | x1-x2 | + | y1-y2 |.

Entrée

La première ligne a un nombre N, ce qui signifie le nombre de villes. La
ligne suivante N a deux nombres x, y, ce qui signifie les coordonnées de chaque ville.

Sortie

Comptez ans sur une ligne, de sorte qu'il commence à partir de la ville 1, saute une certaine ville et que la distance totale pour atteindre la ville N soit la plus petite

Exemple d'entrée

4
0 0
8 3
11 -1
10 0

Exemple de sortie

14

Limitation de la plage de données

• Pour 40% des données, N <= 1000.
• Pour des données à 100%, 3 <= N <= 10 5 , -10 3 <= x <= 10 3 , -10 3 <= y <= 10 3 .

Rapide

Sauter la ville 2.

Analyse

Sujet: En fait, c'est un processus de «construction de ponts» et de «rupture de ponts». Trouvez d'abord la distance, additionnez, puis énumérez chaque point comme le point à ignorer, soustrayez la distance de x-1 ~ x et x x + 1, puis ajoutez la distance de x-1 x + 1, appuyez sur Une bague suffit.

Code sur

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
long long n,ans=922337203685477,ff;
long long a[100010],b[100010];//记得longlong
int main()
{
	freopen("marathon.in","r",stdin);
	freopen("marathon.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
	 	cin>>a[i]>>b[i];
	 	if(i>=2) ff=ff+abs(a[i]-a[i-1])+abs(b[i]-b[i-1]);//统计总长度 
	}
	for(int i=2;i<=n-1;i++)
	{
        ans=min(ans,ff-abs(a[i]-a[i-1])-abs(b[i]-b[i-1])-abs(a[i]-a[i+1])-
		abs(b[i]-b[i+1])+abs(a[i-1]-a[i+1])+abs(b[i-1]-b[i+1]));//拆桥搭桥 
	}
	cout<<ans;
	return 0;
}

Publié 110 articles originaux · 100 éloges · 8032 visites

Je suppose que tu aimes

Origine blog.csdn.net/dglyr/article/details/104826066
conseillé
Classement