码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【python】邮局选址问题(中位数策略)


    题目:

    【问题描述:】 给定n个居民点的位置,求把邮局建在何处,可以使得所有居民点到邮局的距离总和最小。

    【数据输入:】 第1行是居民点数n,1≤n≤10000。接下来n行是居民点的位置,每行2个整数x和y,-10000≤x,y≤10000。

    【结果输出:】 1个数,是n个居民点到邮局的距离总和的最小值。

    【输入示例】

    5

    1 2

    2 2

    1 3

    3 -2

    3 3

    【输出示例】

    10

    代码:

    1. # 解题思路:邮局选址问题可以通过中位数策略来解决,通过找到所有居民点的中位数位置,我们可以最小化总距离。
    2. # 定义函数,接受居民点数量 n 和居民点位置列表 resident_locations 作为输入
    3. def optimal_post_office_location(n, resident_locations):
    4. # 分别提取 x 和 y 坐标
    5. x_coords = [location[0] for location in resident_locations]
    6. y_coords = [location[1] for location in resident_locations]
    7. # 对 x 和 y 坐标排序,以便找到中位数
    8. x_coords.sort()
    9. y_coords.sort()
    10. # 找到 x 和 y 坐标的中位数
    11. # 曼哈顿距离使得奇数和偶数的情况下都能得到确定的中位数
    12. median_x = x_coords[n // 2]
    13. median_y = y_coords[n // 2]
    14. # 计算每个居民点到中位数位置的距离,并将这些距离加起来,得到总距离
    15. total_distance = sum(abs(x - median_x) + abs(y - median_y)
    16. for x, y in resident_locations)
    17. # 返回总距离
    18. return total_distance
    19. # 输入数据,首先输入居民点数量 n
    20. n = int(input())
    21. resident_locations = [] # 初始化居民点位置列表
    22. # 循环输入每个居民点的位置,并将其添加到居民点位置列表中
    23. for _ in range(n):
    24. x, y = map(int, input().split())
    25. resident_locations.append((x, y))
    26. # 调用函数,计算并输出结果
    27. result = optimal_post_office_location(n, resident_locations)
    28. print(result) # 输出 10

  • 相关阅读:
    强化学习问题(六)--- 无法安装gym 0.21.0
    limux环境配置文件
    java-net-php-python-jspm零担快跑物流管理系统计算机毕业设计程序
    2022甘肃二级造价工程师考试报名开始!北京、浙江二造考试恢复!
    yarn 设置淘宝镜像配置
    小伙伴说VuePress太简洁了,还有没有其他博客推荐?
    披头士最经典的那张唱片封面,竟是传奇哈苏所拍
    面试官:线程池中多余的线程是如何回收的?
    NOIP2011-2018提高组解题报告
    [附源码]java毕业设计小说网站的设计与实现1
  • 原文地址:https://blog.csdn.net/fdxy12138/article/details/133944282
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号