美团校招笔试真题&软件开发一二面经

1.6.1 小美的送花线路

【题目描述】

小美是美团的一名鲜花快递员,鲜花是一种保质期非常短的商品,所以需要尽快送到客户手中,公司对于骑手的一个要求就是要规划送花的线路,使得骑手送完所有订单走的路程尽可能少。(骑手开始派送时带走了所有需要派送的花,不必每单后返回花店,路程结算是从花店出发,到送完最后一名客户为止,不计算从最后一名客户家回到花店的时间)

公司对于骑手的绩效评价是取决于两个指标,一是从花店到所有客户地址的距离之和,另一个是骑手实际走的路程。

设花店始终位于1号位置,客户共有n-1个,其编号为2~n。令dis(i,j)表示i号位置到j号位置的距离,即分别计算,和骑手实际所走的最短路程。

为了简化问题,我们约束这n个位置构成的是一棵树,即只有n-1条边在其中互相连接,且保证n个点彼此连通。

输入描述:

输出第一行包含一个正整数n,即花店和客户的总数。(1≤n≤30000)

接下来有n-1行,每行有三个整数u,v,w,表示在u和v之间存在一条距离为w的道路。(1≤w≤1000)

输出描述:

输出包含两个整数,中间用空格隔开,分别表示花店到所有客户地址的距离之和和骑手实际走的路程。

输入样例:

5

1 2 3

1 3 1

1 4 2

2 5 1

输出样例:

10 10

【解题思路】

BFS,利用map存储该节点的所有子节点的编号以及该节点到下一节点的权值,在queue中push入队时,不断更新根节点到下一节点的总代价,也就是distant(1, i),当该节点没有子节点时说明到了叶子节点处,更新最长的路径长度,最后用所有的weight的和减去该最长路径(只走一次)就是骑手走的总距离。

【参考代码】

#include <bits/stdc++.h>

using namespace std;

int main() {

int n;

scanf("%d", &n);

unordered_map<int, vector<pair<int, int>>> mp;

int total = 0;

while (--n) {

int sor, des, w;

scanf("%d%d%d", &sor, &des, &w);

mp[sor].push_back({des, w});

total += w;

}

queue<pair<int, int>> q;

q.push({1, 0});

int maxLength = -1, sumLength = 0;

while (!q.empty()) {

pair<int, int> p = q.front();

q.pop();

int len = mp[p.first].size();

if (!len) {

//total += p.second;

maxLength = max(maxLength, p.second);

} else {

for (int i = 0; i < len; ++i) {

pair<int, int> tmp = mp[p.first][i];

q.push({tmp.first, p.second + tmp.second});

sumLength += (p.second + tmp.second);

}

}

}

total = total * 2 - maxLength;

cout << sumLength << ' ' << total << endl;

return 0;

}

......

资料全部内容请看《2025届求职宝典-理工科版

不收费,2人组团即可免费领取!已经发出10000份,涵盖各大公司求职资料,助你事半功倍!

资料包含:

  • 30+大厂面试真题+解析
  • 软件方向:阿里、腾讯、百度、小米、华为、美团......
  • 硬件方向:华为、比亚迪、汇川、新华三、中兴、海康威视......
  • 机械方向:比亚迪、华为、美的、长江存储、宁德时代......
  • 30+大厂岗位薪资爆料
  • 30+大厂offer攻略

拿offer,别犹豫,点击马上领取>>https://www.nowcoder.com/link/campus_ziliao2024-tiezi13

电脑端请微信扫码>>

多说无益,直接上资料截图

每个方向专栏售价69元,但是参与2人组团就可免费领取

点击马上领取>>https://www.nowcoder.com/link/campus_ziliao2024-tiezi13

#软件开发薪资爆料#
全部评论

相关推荐

2024.04.25下午一面,笔试写的非常差,除了签到题其他题均没有全部测试用例通过,很惊喜收到面邀,目前预感不佳。介绍2024.04.28更新:居然接到二面邀了哈哈哈哈!我一定要好好准备!2024.05.08晚上二面:携程,你是压力面的神!二面:没有自我介绍,面试官上来锐评本人做的东西没有技术含量,然后要求细讲项目经历讲到第一个项目经历就被打断(是论文复现)问复现论文有什么意义吗,对你有什么用(本人词穷)引申到复现论文与毕设的关系,要求讲毕设,讲到一半被打断,开始八股:1.TCP协议不重不丢机制怎么实现(讲了序列号确认号和超时重传)2.要求细讲上面哪些实现了不重,本问题重复问了三次3.上述机制下接收方可能收到重复包吗,如何知道是重复的4.换问法:接收方如何确认包是重复的5.你提到的接收窗口,讲一下不重实现的原理6.再问两遍到底是怎么保证不重7.你的机制有漏洞吗(被打断,指出发散过于遥远重新回答)8.有没有什么办法优化9.你提到的拥塞控制怎么优化不重(此处打断,指出又发散了……)上述问题中多次重复提问确定对吗,以及反问多次面试官问的问题是什么,因为本人的水平就这么浅,感觉面试官已经竭尽所能在深挖了……算法题:给定key,和一个有序数组,按顺序插入的最左端的位置反问环节:SRE有什么细分的工作内容-回答二面是部门交叉面他不清楚。一面:1.感觉经历偏开发,为什么选SRE工程师2.SRE工程师工作中重要的是什么内容3.你进入这个岗位能做哪些工作(sry背调不够词穷)4.SRE可以用到哪些我学到的东西5.详细介绍简历中脚本相关的经历-脚本怎么查JDK版本-很多版本怎么查-你用什么版本开发6.讲一下Java有序集合7.arraylist输入2,1,4打印arraylist输出什么-怎么打出124呢8.http发送的过程9.讲一下持久连接10.http1.1之后的特性11.讲一下四次挥手12.服务器第一次回收之后是什么状态共享屏幕写一道题:输出一个链表倒数第K个数大概40+分钟,面试官中途总是笑一声再说话总让我怀疑哪说错了压力颇大,hope&nbsp;well#携程##携程SRE#
点赞 评论 收藏
转发
2 收藏 评论
分享
牛客网
牛客企业服务