คุณเป็นเจ้าของร้านอาหาร คุณกำลังเปิดในพื้นที่ใหม่ใน Cartesia ที่มีถนนสายหลักเพียงเส้นเดียวเท่านั้นที่รู้จักกันในชื่อแกน y คุณต้องการวางร้านอาหารของคุณเพื่อลดระยะทางโดยรวมจากร้านอาหารและบ้านแต่ละหลังในพื้นที่นั้น
อินพุต :
อินพุตจะเป็น
n, the number of houses
house1
house2
house3
...
houseN
x y
ซึ่งแต่ละบ้านจะประสานงานในรูปแบบ แต่ละหน่วยแสดงถึงหนึ่งกิโลเมตร
คุณสามารถรับอินพุตเป็นสตริงหรือจัดเตรียมฟังก์ชันที่รับอินพุตในรูปแบบใดก็ได้ที่คุณเลือกเป็นอาร์กิวเมนต์
เอาท์พุท : พิกัด y ของร้านอาหารของคุณ (จำไว้ว่ามันจะอยู่บนแกน y) จริงๆแล้วมันจะอยู่ข้างถนน แต่ความแตกต่างนั้นเล็กน้อย
โดยพื้นฐานแล้วถ้าบ้านหลังที่ n อยู่h_n
และD
เป็นฟังก์ชั่นระยะทางคุณจะต้องหาสิ่งk
ที่D(h_0, (0, k)) + D(h_1, (0, k)) + D(h_2, (0, k)) + ... + D(h_n, (0, k))
ถูกลดทอน
โปรดทราบว่าระยะทางจะถูกคำนวณราวกับว่าลูกค้าเดินทางเป็นเส้นตรงจากบ้านถึงร้านอาหาร นั่นคือห่างจากร้านอาหารของคุณ(x, y)
sqrt(x^2 + (y - k)^2)
ผลลัพธ์ควรมีความถูกต้องถึงทศนิยมอย่างน้อย 2 ตำแหน่ง
เอาต์พุตสามารถพิมพ์เป็นสตริงหรือสามารถส่งคืนจากฟังก์ชัน
ตัวอย่างอินพุต / เอาต์พุต:
Input:
2
5.7 3.2
8.9 8.1
Output:
5.113013698630137
ระยะทางโดยรวมในตัวอย่างนี้ประมาณ15.4003
กิโลเมตร
นี่คือรหัสกอล์ฟ - รหัสที่สั้นที่สุดชนะ
ป.ล. ฉันยังสนใจในวิธีการแก้ปัญหาทางคณิตศาสตร์ที่ไม่ได้เป็นเพียงกำลังดุร้าย มันจะไม่ชนะ code golf แต่มันจะได้ upvotes นี่คือวิธีที่ฉันทำปัญหาตัวอย่าง:
ให้จุด A ตั้งอยู่ที่ A (5.7, 3.2) และ B ที่ B (8.9, 8.1) ปล่อยให้สารละลายชี้ไปที่ (0, k) เป็น C สะท้อน A เหนือแกน y เพื่อให้ A 'ที่ (-5.7, 3.2) ระยะทางจาก A 'ถึง C เท่ากับระยะทางจาก A ถึง C ดังนั้นปัญหาสามารถลดลงถึงจุด C เพื่อให้ A'C + CB ถูกย่อให้เล็กสุด เห็นได้ชัดว่านี่คือจุด C ที่อยู่บนเส้น A'B
ฉันไม่รู้ว่ามันจะพูดได้ดีถึง 3 คะแนนขึ้นไปหรือเปล่า
sqrt(diffX^2 + diffY^2)
อย่างไร? แล้วยุคลิด ฉันรู้ว่ามันไม่เหมาะกับสถานการณ์อย่างสมบูรณ์ แต่สมมติว่าลูกค้าเดินทางเป็นเส้นตรงจากบ้านของเขา / เธอ
D
? ยุคลิด?