华为嵌入式软件开发工程师笔试4-19
公号:嵌入式未来
《嵌入式软件开发笔试与面试手册》:https://blog.nowcoder.net/zhuanlan/jvN8gj
《嵌入式软件笔试-2023年真题汇总》:https://blog.nowcoder.net/zhuanlan/0oDWVm
1、服务器能耗统计
服务器有三种运行状态:空载、单任务、多任务,每个时间片的能耗的分别为1、3、4;
每个任务由起始时间片和结束时间片定义运行时间;
如果一个时间片只有一个任务需要执行,则服务器处于单任务状志;
如果一个时间片有多个任务需要执行,则服务器处于多任务状态;
给定一个任务列表,请计算出从第一个任务开始,到所有任务结束,服务器的总能耗。
输入
第一行的数字表示一共有多少个任务
后续每行包含由空格分割的两个整数,用于确定每一个任务的起始时间片和结束时间片;
任务执行时间包含起始和结束时间片,即任务执行时间是左团右闭的;
结束时间片一定大于等于起始时间片;
输出
一个整数,代表服务器的总能耗
样例1
输入:
2
2 5
8 9
输出:
20
解释:
[0,1]没有任务需要执行,能耗为0
[2,5]处于单任务状态,能耗为3*4=12
[6,7]处于空载状态,能耗为1*2=2
[8,9]处于单任务状态,能耗为3*2=6
共计能耗为12+2+6=20
样例2
输入:
3
4 8
1 6
2 9
输出:
34
解释:
[0,1]没有任务需要执行,能耗为0
[1,1]处于单任务状态,能耗为3*1=3
[2,8]处于多任务状态,能耗为4*7=28
[9,9]处于单任务状态,能耗为3*1=3
共计能耗为3+28+3=34
#include <iostream> #include <vector> using namespace std; void func() { int num; cin >> num; vector<int> diff(1000001, 0); int n = 0; int start = 1000002; for (int i = 0; i < num; i++) { int l, r; cin >> l >> r; n = max(n, r); start = min(start, l); diff[l] += 1; diff[r + 1] -= 1; } vector<int> res(n + 1, 0); res[0] = diff[0]; for (int i = 1; i < n + 1; i++) { res[i] += res[i - 1] + diff[i]; } int ans = 0; for (int i = start; i < n + 1; i++) { int r = res[i]; if (r == 0) { ans += 1; } else if (r == 1) { ans += 3; } else { ans += 4; } } cout << ans << endl; } int main() { func(); return 0; }
题目2:
给定一棵树,这个树有n个节点,节点编号从0开始依次递增,0固定为根节点。在这棵树上有一个小猴子,初始时该猴子位于根节点(0号)上
小报子—次可以沿着树上的边从一个节点挪到另一个节点,但这棵树上有—些节点设置有际碍物,如果某个节点上设置了障,,(),()NULL.
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。