[牛客/校招编程真题][C++]建物流中转站
建物流中转站
题目描述
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。
思路:
穷举法。
- 使用unordered_multimap记录房子的位置。
- 遍历栅格,计算最小距离,并且记录该栅格的状态(房子,空地)。
- 特殊情况,某两个位置距离相等,但是1个是房子,1个是空地,此时是可以修建的。
代码:
#include<iostream>
#include<vector>
#include<unordered_map> //unordered_multimap
#include<limits.h> //INT_MAXusing namespace std;vector<vector<int>> nums(1005,vector<int>(1005,0)); int main()
{unordered_multimap<int,int> house;int N;cin>>N;for(int i=0;i<N;i++){for(int j=0;j<N;j++){cin>>nums[i][j];if(nums[i][j])house.insert(make_pair(i,j)); //记录房子位置} } /int min_dist = INT_MAX;int type=1;for(int i=0;i<N;i++){for(int j=0;j<N;j++){ int tmp_dist=0;for(unordered_map<int,int>::iterator it=house.begin();it!=house.end();it++){tmp_dist+=abs(i-it->first)+abs(j-it->second);}if(min_dist > tmp_dist || (min_dist == tmp_dist && nums[i][j]==0) ){min_dist=tmp_dist;type=nums[i][j];}}}if(type)cout<<-1<<endl;elsecout<<min_dist<<endl;return 0;}
结果:
[牛客/校招编程真题][C++]建物流中转站相关推荐
- 牛客 美团编程真题 MT1 最大差值 基础贪心 蓝书上的例题
题目描述 有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值. 给定数组A及它的大小n,请返回最大差值. 测试样例: [10,5],2 返回:0 这题原题是蓝书上的例题 蓝书 ...
- 牛客网笔试真题 2021 阿里巴巴编程题(4星)题解(1-5)
2021阿里巴巴校招笔试真题_Java工程师.C++工程师_牛客网 1.小强现在有n个物品,每个物品有x,y两种属性和.他想要从中挑出尽可能多的物品满足以下条件:对于任意两个物品 i 和 j ,满足( ...
- 牛客 哔哩哔哩校招编程真题 给定一个整数数组,判断其中是否有3个数和为N 二分经典 三数之和
题目描述 给定一个整数数组,判断其中是否有3个数和为N 输入描述: 输入为一行 逗号前为一个整数数组,每个元素间用空格隔开:逗号后为N 输出描述: 输出bool值 True表示存在3个和为N的数 Fa ...
- 【牛客网-公司真题-前端入门篇】——58同城2021校招笔试-前端
- 牛客JS编程大题(一)
1.找出元素 item 在给定数组 arr 中的位置 function indexOf(arr,item){ return arr.indexOf(item); } 2.计算给定数组 arr 中所有元 ...
- 【牛客网-公司真题-前端入门篇】——小米秋招笔试-前端
- 【牛客网-公司真题-前端入门篇】——奇安信秋招笔试-前端-卷1
- 【牛客网-公司真题-前端入门篇】——奇安信春招笔试-前端-卷2
- shopee的零食柜-动态规划-校招编程真题
题目描述 shopee的零食柜,有着各式各样的零食,但是因为贪吃,小虾同学体重日益增加,终于被人叫为小胖了,他终于下定决心减肥了,他决定每天晚上去操场跑两圈,但是跑步太累人了,他想转移注意力,忘记痛苦 ...
最新文章
- SAP WM 能否使用LT12去确认一个需要2-step法确认的TO单?
- python3 for mac_PyCharm for Mac-PyCharm Mac版下载 V2018.3.2-PC6苹果网
- 记录一个超分辨率算法项目,来自B站
- Spring RabbitMQ使用
- 昆明学院计算机二级报名时间,2017年3月昆明学院计算机等级考试报名时间(云南)...
- Hibernate学习笔记(一)
- UOJ Test Round 3
- python字母频率_科学网-Python统计字母频数和频率-吕波的博文
- 【转载】架构师速成-如何高效编程
- 好吧,你说简单就简单,但简单的事,不要变成本能,要常思常变
- python聊天机器人
- Javascript从零开始学习第一天
- 使用ConcurrentDictionary实现轻量缓存
- 从 CCNA 到 CCIE
- Keil5下载芯片包并导入教程
- 2021年创新医疗器械盘点
- 西门子定位器6DR5010-0NN00-0AA0
- php 图片上加文字,PHP实现在图片中添加中文文字
- Excel如何取消合并单元格并填充空单元格
- tp路由服务器无响应,路由器无法PPPOE链接上网老显示服务器无响应