首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客472879769号
成都文理学院 算法工程师
发布于安徽
关注
已关注
取消关注
@林小白zii:
2023 华为笔试题 0913
笔试时间:2023年9月13日 秋招 第一题 题目:快递中转站 快递公司有一个业务要求,所有当天下发到快递中转站的快递,最迟在第二天送达用户手中。假设已经知道接下来n天每天下发到快递中转站的快递重量。快递中转站负责人需要使用快递运输车运输给用户,每一辆运输车最大只能装k重量的快递。每天可以出车多次,也可以不出车,也不要求运输车装满。当天下发到快递中转站的快递,最晚留到第二天就要运输走送给用户。快递中转站负责人希望出车次数最少,完成接下来n天的快递运输。 解答要求:时间限制: C/C++ 1000ms,其他语言: 2000ms内存限制: C/C++256MB其他语言: 512MB 输入描述 输入第一行包含两个整数n(1<= n<=200000),k(1<=k<=100000000) 第二行包含n个整数ai,表示第i天下发到快递中转站的快递重量。 输出描述 输出最少需要的出车次数。 样例输入 3 2 3 2 1 样例输出 3 说明 第一天的快递出车一次送走2个重量,留1个重量到第二天 第二天送走第一天留下的1个重量和当前的1个重量,留1个重量到第三天送走。 参考题解 模拟题。 C++:[此代码未进行大量数据的测试,仅供参考] #include <iostream>#include <vector>using namespace std;int main() { long long totalNumbers, divisor; cin >> totalNumbers >> divisor; vector<int> numbers(totalNumbers, 0); for (int i = 0; i < totalNumbers; i++) { cin >> numbers[i]; } long long totalOperations = 0; long long remainder = 0; for (int i = 0; i < totalNumbers; i++) { long long currentSum = numbers[i] + remainder; long long divisionResult = currentSum / divisor; long long newRemainder = currentSum % divisor; if (divisionResult == 0 && remainder != 0) { divisionResult++; newRemainder = 0; } totalOperations += divisionResult; remainder = newRemainder; } if (remainder != 0) { totalOperations++; } cout << totalOperations << endl; return 0;} Java:[此代码未进行大量数据的测试,仅供参考] import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); long totalNumbers = scanner.nextLong(); long divisor = scanner.nextLong(); long[] numbers = new long[(int) totalNumbers]; for (int i = 0; i < totalNumbers; i++) { numbers[i] = scanner.nextLong(); } long totalOperations = 0; long remainder = 0; for (int i = 0; i < totalNumbers; i++) { long currentSum = numbers[i] + remainder; long divisionResult = currentSum / divisor; long newRemainder = currentSum % divisor; if (divisionResult == 0 && remainder != 0) { divisionResult++; newRemainder = 0; } totalOperations += divisionResult; remainder = newRemainder; } if (remainder != 0) { totalOperations++; } System.out.println(totalOperations); }} Python:[此代码未进行大量数据的测试,仅供参考] total_numbers, divisor = map(int, input().split())numbers = list(map(int, input().split()))total_operations = 0remainder = 0for num in numbers: current_sum = num + remainder division_result = current_sum // divisor new_remainder = current_sum % divisor if division_result == 0 and remainder != 0: division_result += 1 new_remainder = 0 total_operations += division_result remainder = new_remainderif remainder != 0: total_operations += 1print(total_operations) 第二题 题目:互通设备集 局一局域网内的设备可以相互发现,具备直连路由的两个设备可以互通。假定设备A和B互通,B和C互通,那么可以将B作为中心设备,通过多跳路由策略使设备A和C互通。这样,A、B、C三个设备就组成了一个互通设备集。其中,互通设备集包括以下几种情况: 1、直接互通的多个设备; 2、通过多跳路由第略间接互通的多个设备; 3、没有任何互通关系的单个设备现给出某一局域网内的设备总数以及具备直接互通关系的设备。 请计算该局域网内的互通设备集有多少个? 输入描述 第一行: 某一局域网内的设备总数M,32位有符号整数表示。1<= M<=200 第二行:具备直接互通关系的数量N,32位有符号整数表示。0<= N<200 第三行到第N+2行: 每行两个有符号32位整数,分别表示具备直接互通关系的两个设备的编号,用空格隔开。每个设备具有唯一的编号,0<设备编号< M 输出描述 互通设备集的数量,32位有符号整数表示。 样例输入 3 2 0 1 0 2 样例输出 1 说明 编号0和1以及编号0和2的设备直接互通,编号1和2的设备可通过编号0的设备建立互通关系,互通设备集可合并为1个。 参考题解 并查集,参考岛屿解法。 C++:[此代码未进行大量数据的测试,仅供参考] #include <iostream>#include <vector>using namespace std;vector<int> parent;void initialize(int n) { parent.assign(n, 0); for (int i = 0; i < n; i++) { parent[i] = i; }}int findSet(int x) { return (x == parent[x]) ? x : (parent[x] = findSet(parent[x]));}void unionSets(int x, int y) { parent[findSet(x)] = findSet(y);}int main() { int m, n; cin >> m >> n; initialize(m); int u, v; for (int i = 0; i < n; i++) { cin >> u >> v; unionSets(u, v); } int numDisjointSets = 0; for (int i = 0; i < m; i++) { if (findSet(i) == i) { numDisjointSets++; } } cout << numDisjointSets << endl; return 0;} Java:[此代码未进行大量数据的测试,仅供参考] import java.util.Scanner;public class Main { static int[] parent; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int m = scanner.nextInt(); int n = scanner.nextInt(); initialize(m); int u, v; for (int i = 0; i < n; i++) { u = scanner.nextInt(); v = scanner.nextInt(); unionSets(u, v); } int numDisjointSets = 0; for (int i = 0; i < m; i++) { if (findSet(i) == i) { numDisjointSets++; } } System.out.println(numDisjointSets);
点赞 2
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-31 14:10
门头沟学院 Java
那很敬业了
点赞
评论
收藏
分享
07-27 20:23
滴滴_测试开发(准入职员工)
滴滴内推,滴滴内推码,免笔试!
滴滴提前批启动!不影响正式批投递内推码:DSBHuTXN内推码:DSBHuTXN内推码:DSBHuTXN上下班不打卡,包晚餐,9点后打车免费。有商保报销90%,过节有公司礼盒。有人情味,相较其他厂老人(3年以上司龄)相对更多些!一般情况下一天完成所有面试~不影响正式批投递,更早拿offer🚘岗位类别 工程类/算法类/数据类/安全技术类/产品类/商业分析类等🚘投递要求2025年9月~2026年8月之间毕业的海内外高校毕业生,每人可投递1个岗位🚘工作地点北京/杭州/上海等公司福利薪资在大厂中也算是比较有竞争力的,节假日各种礼包,桔厂周边,校招礼包,司庆礼盒少不了,速来来解锁,小零食,免费晚饭...
滴滴公司福利 1181人发布
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度提前批,三面被推迟一周,喜提秋招第一凉
7672
2
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
3266
3
...
虾皮秋招一面
3134
4
...
百度提前批 三面
2683
5
...
小鹏offer
1700
6
...
虾皮一面凉经
1520
7
...
被猿辅导挂了简历,但我想说...
1440
8
...
最强本科✌
1409
9
...
上班一周,工资还没拿,先欠公司两千
1391
10
...
大学四年,我感觉我像个“孤勇者”
1240
创作者周榜
更多
正在热议
更多
#
简历上的经历如何包装
#
30131次浏览
825人参与
#
秋招被确诊为……
#
164488次浏览
757人参与
#
中兴秋招
#
206079次浏览
2300人参与
#
工作中哪个瞬间让你想离职
#
63980次浏览
571人参与
#
Offer比较,你最看重什么?
#
193987次浏览
1313人参与
#
和同事相处最忌讳的是__
#
24717次浏览
245人参与
#
找工作如何保持松弛感?
#
91938次浏览
1111人参与
#
26届的你,投了哪些公司?
#
46299次浏览
501人参与
#
你遇到最难的面试题目是_
#
16868次浏览
201人参与
#
我对___祛魅了
#
49303次浏览
442人参与
#
你最希望上岸的公司是?
#
135375次浏览
706人参与
#
虾皮求职进展汇总
#
249771次浏览
1869人参与
#
柠檬微趣工作体验
#
6782次浏览
40人参与
#
投格力的你,拿到offer了吗?
#
86944次浏览
584人参与
#
你跟室友的关系怎么样?
#
7395次浏览
111人参与
#
通信硬件岗投递时间线
#
18827次浏览
69人参与
#
你最讨厌面试问你什么?
#
28612次浏览
314人参与
#
什么样的背景能拿SSP?
#
38753次浏览
227人参与
#
地平线求职进展汇总
#
52692次浏览
370人参与
#
如何看待offer收割机的行为
#
817445次浏览
6096人参与
#
如何快速融入团队?
#
17090次浏览
206人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务