首页 > 试题广场 >

建物流中转站

[编程题]建物流中转站
  • 热度指数:8696 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

Shopee物流会有很多个中转站。在选址的过程中,会选择离用户最近的地方建一个物流中转站。

假设给你一个二维平面网格,每个格子是房子则为1,或者是空地则为0。找到一个空地修建一个物流中转站,使得这个物流中转站到所有的房子的距离之和最小。 能修建,则返回最小的距离和。如果无法修建,则返回 -1。


若范围限制在100*100以内的网格,如何计算出最小的距离和?

当平面网格非常大的情况下,如何避免不必要的计算?


输入描述:
4
0 1 1 0
1 1 0 1
0 0 1 0
0 0 0 0

先输入方阵阶数,然后逐行输入房子和空地的数据,以空格分隔。


输出描述:
8

能修建,则返回最小的距离和。如果无法修建,则返回 -1。
示例1

输入

4
0 1 1 0
1 1 0 1
0 0 1 0
0 0 0 0

输出

8
示例2

输入

4
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1

输出

-1
头像 王清楚
发表于 2020-04-27 17:23:17
我们先来回顾一下课上讲的例题5,第一章1小时09分左右开始思路是枚举每一个子正方形。枚举正方形的方法是这样的:知道了一个正方形的左上方顶点,并且知道了这个正方形的边长,就可以确定一个正方形。然后判断这个正方形的边上是不是全为1,如果用正常的方式来判断,还要把正方形边上的数字全部判断一遍才能得到答案。 展开全文
头像 白伟仝
发表于 2020-05-09 11:51:24
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nex 展开全文
头像 mio-1
发表于 2020-05-07 20:49:38
行列分开算 每当中转站向右(下)移动一列(行),其他房子到中转站得行(列)距离变化为: 当前列(行)左边的房子距离+1 当前列(行)右边的房子距离-1 设第i列(行)左边的房子数 ai,总房子数为sum 左边距离变化:+1 * ai 右边距离变化:-1 * (sum-ai) 总变化: 展开全文
头像 ElonB
发表于 2019-09-29 20:45:38
""" 二维投影到一维,简化时间复杂度,O(n^2) 在X,Y维求距离和,相加即为二维的距离和,在合适的地方取最小值。 """ import sys if __name__ == '__main__': # sys.stdin = open("input.txt", "r") n = 展开全文
头像 洗剪吹全套
发表于 2020-06-29 21:24:04
数组前缀和思想:二维数组不好直接统计,输入时先记录每一行,每一列,输出结束再次按行按列统计前缀和: #include<bits/stdc++.h> using namespace std; int n; int a[120][120]; int ans; const int inf=1e 展开全文
头像 玩物尚智
发表于 2020-06-20 01:13:11
我目前对动态规划还没有系统的学习过,所以说不上啥专业的术语,我的题解也是从别人的题解中受到了启发,然后加入了自己的理解。 其他几个解题报告有的的纯贴代码,有的题解看得不是很懂,我尽量用通俗易懂的方式展示自己的解题思路,希望能帮助到大家,同时也提升我自己。 最开始刷这道题的时候,状态不是很 展开全文
头像 acvv_khalil
发表于 2021-10-29 14:29:07
#include <iostream> #include <cstring> #include <algorithm> #include <vector> using namespace std; const int N = 100010; int 展开全文
头像 随意凯
发表于 2020-06-20 16:06:58
暴力解法,这道题卡了我很长时间,原因在于他所谓的距离,并不是两点之间的直线距离,而是只能如下走,然后问题就很简单了 #include<stdio.h> #include<string.h> #include<iostream> #include< 展开全文
头像 enstein
发表于 2020-05-25 22:03:01
题目描述 Shopee物流会有很多个中转站。在选址的过程中,会选择离用户最近的地方建一个物流中转站。 假设给你一个二维平面网格,每个格子是房子则为1,或者是空地则为0。找到一个空地修建一个物流中转站,使得这个物流中转站到所有的房子的距离之和最小。 能修建,则返回最小的距离和。如果无法修建,则返回 - 展开全文
头像 THE米兔
发表于 2019-07-31 13:28:48
Shopee物流会有很多个中转站。在选址的过程中,会选择离用户最近的地方建一个物流中转站。 假设给你一个二维平面网格,每个格子是房子则为1,或者是空地则为0。找到一个空地修建一个物流中转站,使得这个物流中转站到所有的房子的距离之和最小。 能修建,则返回最小的距离和。如果无法修建,则返回 -1。 展开全文