1. 程式人生 > >距離之和最小 V2

距離之和最小 V2

三維空間上有N個點, 求一個點使它到這N個點的曼哈頓距離之和最小,輸出這個最小的距離之和。 點(x1,y1,z1)到(x2,y2,z2)的曼哈頓距離就是|x1-x2| + |y1-y2| + |z1-z2|。即3維座標差的絕對值之和。 Input
第1行:點的數量N。(2 <= N <= 10000)
第2 - N + 1行:每行3個整數,中間用空格分隔,表示點的位置。(-10^9 <= X[i], Y[i], Z[i] <= 10^9)
Output
輸出最小曼哈頓距離之和。
Input示例
4
1 1 1
-1 -1 -1
2 2 2
-2 -2 -2
Output示例
18
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

typedef long long int ll;
const int SIZE = 10005;
int n;

ll X[SIZE], Y[SIZE], Z[SIZE];

int main()
{
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> X[i] >> Y[i] >> Z[i];
	}

	sort(X, X + n);
	sort(Y, Y + n);
	sort(Z, Z + n);

	int left = 0;
	int right = n-1;

	ll result = 0;
	while (left < right)
	{
		result += X[right] - X[left] + Y[right] - Y[left] + Z[right] - Z[left];
		left++;
		right--;
	}

	cout << result << endl;

    return 0;
}


相關推薦

距離之和 V2

三維空間上有N個點, 求一個點使它到這N個點的曼哈頓距離之和最小,輸出這個最小的距離之和。 點(x1,y1,z1)到(x2,y2,z2)的曼哈頓距離就是|x1-x2| + |y1-y2| + |z1-z2|。即3維座標差的絕對值之和。 Input 第1行:點的數量N。(2 

51nod 1096 距離之和 思維題,求中位數

code turn ima col blog images png width span 題目: 在一條直線上,與兩個點距離之和最小的點,是怎樣的點? 很容易想到,所求的點在這兩個已知點的中間,因為兩點之間距離最短。 在一條直線上,與三個點距離之和最小的點,是怎樣

51Nod 1110 距離之和 V3 中位數 思維

temp sort c++ eve closed cin struct 算法 數量 基準時間限制:1 秒 空間限制:131072 KB 分值: 40 難度:4級算法題 X軸上有N個點,每個點除了包括一個位置數據X[i],還包括一個權值W[i]。點P到點P[i]的帶權距離

關於貨倉選址問題的方法及證明(在數軸上找一點使得該點到所有其他點的距離之和

否則 關於 中位數 多個 而且 如果能 最小 包括 其他 在數軸上找一點使得該點到所有其他點的距離之和最小 方法:找到大小為中位數的點,該點就是要求的點(如有兩個取之間任意一點都行) 證明:   先看看當只有2個點時的情況:     分類討論:   如果在A

51 Nod 1110距離之和V3

1110 距離之和最小 V3 1 秒   131,072 KB   40 分   4 級題 X軸上有N個點,每個點除了包括一個位置資料X[i],還包括一個權值W[i]。點P到點P[i]的帶權距離 = 實際距離 * P

51Nod 1096 距離之和

X軸上有N個點,求X軸上一點使它到這N個點的距離之和最小,輸出這個最小的距離之和。 收起 輸入 第1行:點的數量N。(2 <= N <= 10000) 第2 - N + 1行:點的位置。(-10^9 <= P[i] <= 10^9) 輸出 輸出最小距離之和

霍夫變換與距離之和擬合圓方法對比

1、**霍夫變換** 其實霍夫變換理論和opencv中HoughCircles的實現是有根本的不同的,霍夫變換基於畫素對自己所屬於的直線或曲線引數方程引數進行投票,最終得票高的就是大概率在影象中存在的曲線。而HoughCircles則是根據畫素(可能的圓周邊緣)的梯度、邊緣、

51Nod1096 距離之和(水題)

 找中位數就行了。 #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<vector> using names

【貪心】糖果傳遞(數軸上求一個點,使得n點到其距離之和,該點為n點中位數)

問題 K: 【貪心】糖果傳遞 時間限制: 1 Sec  記憶體限制: 128 MB 提交: 2  解決: 2 [提交] [狀態] [討論版] [命題人:admin] 題目描述 有n個小朋友坐成一圈,每人有ai個糖果。每人只能給左右兩人傳遞糖果。每人每次傳遞一個糖果代

經典演算法 | 給定數軸上點,尋找一個點到其他點的距離之和

 給你一個數軸上的許多個點,讓你尋找一個點A,使得A到其他所有數軸上的點的距離之和最短  毫無疑問,當數軸上的點的數量是偶數的時候,A取在數軸上所有點按照其座標排列,排在最中間的兩個點中間,  當數軸上的點的數量是奇數的時候,A取這些所有點按照其座標排列,排在最中間的點 當

51Nod 1110 距離之和 V3(中位數+權值轉化為個數)

基準時間限制:1 秒 空間限制:131072 KB 分值: 40 難度:4級演算法題 X軸上有N個點,每個點除了包括一個位置資料X[i],還包括一個權值W[i]。點P到點P[i]的帶權距離 = 實際距

求數軸上一點到數軸上一些點距離之和

也就是求|x-a1|+|x-a2|+...+|x-an|的最小值。 可以證明,當x為a1,a2,...,an的中位數時該式有最小值。 怎麼證明呢? 第一個: 絕對值不等式:||a|-|b|| ≤|a±b|≤|a|+|b| 這裡要用的是|a|+|b|≥|a+b| 可以推出如|

司機乘客匹配中的距離問題

算法這個是在工作中遇到的一個實際的算法問題,問題描述如下,當前有m個司機,n個乘客,每個司機和每個乘客的距離由經緯度可以計算得到,如何匹配可以使其去接乘客的距離和最小?(只能一個司機接一個乘客) 帶權二分圖方法一般對KM算法的描述,基本上可以概括成以下幾個步驟: (1) 初始化可行標桿(2) 用匈牙利算法尋找

給出一個m*n的矩陣,求左上角到右下角的距離值。

問題描述 這是一個商湯科技筆試題的變形,大致是給出一個m*n的矩陣,矩陣裡的數代表其他相鄰格到此格的距離,且只能向右和向下走,求左上角到右下角的距離的最小值。 例: 0 1 9 3 5 2 6 8 7 這個例子的最短距離是0-1-5-2-7,結果是15。 這個真

HDU 1227 dp距離,中位數的應用

在n個商店中建m個倉庫,使各個商店到倉庫的路程之和最小,商店到哪個倉庫是有選擇的, 總之路程之和要最小! 思路: 從第i個商店到第j個商店建一個倉庫,這個倉庫所建的位置一定是dis[(i+j)/2],即建在它的中位數處, 所以,這個增加值就是case[i][j]=abs(d

HDU 4311 Meeting point-1(曼哈頓距離

坐標 一個 處理 turn get ref 題意 num 曼哈頓距離 http://acm.hdu.edu.cn/showproblem.php?pid=4311 題意:在二維坐標中有n個點,現在要從這n個點中選出一個點,使得其他點到該點的曼哈頓距離總和最小。 思

783. Minimum Distance Between BST Nodes BST節點之間的距離

inb occurs ica div span mono .cn light ring Given a Binary Search Tree (BST) with the root node root, return the minimum difference betwe

編輯距離

n-1 當前 color ++i 高效 i++ ring 代碼 urn 當前狀態一定不能從後面的狀態推出 解dp題步驟 1.定義dp數組 2.建立狀態轉移方程 3.確定初始狀態 4.驗證(循環順序) 題目描述 對於兩個字符串A和B,我們需要進行插入、刪除和修改操作將A串變

[Processing]點到線段的距離

() 2.x translate 紅色 坐標 開始 oid color turn 1 PVector p1,p2,n; 2 float d = 0; 3 4 void setup() 5 { 6 size(600,600); 7 8 p1

數組中2個元素的距離

開始 class 最新 null 同時存在 public util urn 語句 # 思路 : 當同時找到2個元素時才開始比較兩者之間的距離 使用最新的下標進行比較 import java.util.concurrent.atomic.AtomicInteger; //