华为嵌入式软件开发工程师笔试5-31

通过率:第一题95%,第二题92%,第三题18%(没有附上)

3、安装太阳能板利润最大化

某公司计划在A地区选择一片区域投资建设太阳能发电站。

由于太阳能发电与地形、光照等自然条件强相关,因此在建设前,需要先进行建站选址、确定安装大阳能板的数量,让发电利润最大。

发电站每年的利润可以用以下公式计算

其中:

Ki:表示第i个太阳能板的年发电收入。与太阳能板安装位置的自然条件 (光照等) 有关。

N: 表示太阳能板总数量

C: 表示平均每个太阳能板每年的支出费用(老化损耗、维修等) ,取固定值: 5。

整个A地区是一个矩形区域。

前期技术人员,按照一块太阳能板覆盖的面积,将A地区内部划分为 m*n 个地块。提前测并计算出每一个地块的年发电收入,使用 m*n 的发电收入矩阵表示。

为了减少管理成本,充分利用土地,必须选择一个 矩形区域 进行排列安装。

请实现功能,求出发电站应安装多少块太阳能板,年利润最大,最大为多少。

输入

第一行包含两个正整数: m、n,空格分隔。表示A地区分成的 m * n 个地块;0<m、n<1024。

后续 n行,每行 m 个正整数,空格分隔。表示每个小块区域的太阳能板年发电收入。0<= 收入<100.

输出

两个整数值,空格分隔。第一个值表示安装的太阳能板总量,第二个值表示最大利润。

注意:

1、如果存在最大利润相同的情况,则输出太阳能板总量较小的结果。

2、如果所有地块利润都是负数,则需选择损失最少的那个地块,安装一块太阳能板。

样例1

输入:

3 2

4 10 7

3 2 9

输出:

4 8

解释:

4 10 7

3 2 9

选择的是: 10、7、2、9 这一正方形区域的 4 个地块。利润是: (10 + 7 + 2 + 9)- (4 * 5) = 8。

样例2

输入:

2 2

1 2

3 4

输出:

1-1

解释:每个地块的利润都是负数,则选择损失最小的一块。

1、获取网络忙时数据

工程师小王想要从海量的网络数据中,筛选出忙时数据。由于是海量数据,小王没办法对海量数据进行排序,再取topN的忙时数据(将数据从大到小排序,取前N个)。聪明的小王想到了使用固定大小的优先级队列来进行数据筛选。为了场景简化,我们用正整数集来表示海量的网络数据,同时只取N个忙时数据,也即只取N个最大的正整数。针对每一批数据输入,单独输出一行结果,直接将N个正整数拼接完完整的一行字符串输出即可。

输入

第一行是正整数N和M,N为忙时个数,取值范围[1,24], M为输入的数据行数,范围[1,1000];

接下来M行,每行两个正整数A,B,以空格分隔,表示有A个重复的正整数B,A、B的取值范围[1,2147483647],如

3 5

1 5

6 3

2 2

5 4

1 6

输出

输出每增加一批数据对应的队列结果,直接将队列里的所有数据集从大到小拼接成字符串输出。

如上例输入的输出为:

第一次输入1个5,则队列输出为5

第二次输入6个3,则队列输出为533

第三次输入2个2,则队列输出为533

第四次输入5个4,则队列输出为544

第五次输入1个6,则队列输出为654

所以最终的输出结果为:

5

533

533

544

654

样例1

输入:

1 3

2 3

1 6

7 4

输出:

3

6

6

解释:

只保留一个忙时

第一次输入2个3,则队列输出为3

第二次输入1个6,则队列输出为6

第三次输入7个4,则队列输出为6

所以最终输出结果为

3

6

6

#include <iostream>
#include <queue>
#include <vector>
using namespace std;

class Solution {
public:
    vector<string> topN(int N, vector<pair<i

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要发布嵌入式软件开发相关岗位的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

6 17 评论
分享
牛客网
牛客企业服务