秋招日寄|小米校招笔试题1-软件开发方向笔试20240905

试卷名称:2025届校招笔试题1-软件开发方向

考试时长:90分钟

开始时间:2024-09-05 16:00 星期四

结束时间:2024-09-05 17:30 星期四

第一题:单选*23,软件开发综合知识;

第二题:多选*2;

第三题:编程*2。

编程题1:

题目描述:
小A每天都要吃a,b两种面包各一个。而他有n个不同的面包机,不同面包机制作面包的时间各不相同。第i台面包机制作a面包
需要花费ai的时间,制作b面包则需要花费bi的时间。
为能尽快吃到这两种面包,小A可以选择两个不同的面包机x,y同时工作,并分别制作a,b两种面包,花费的时间将是
max(ax,by)。 
当然,小A也可以选择其中一个面包机x制作a,b两种面包,花费的时间将是ax+bx。
为能尽快吃到面包,请你帮小A计算一下,至少需要花费多少时间才能完成这两种面包的制作。

输入描述:
第一行一个正整数n,表示面包机的个数。
第二行n个正整数ai,表示面包机制作面包a的时间。
第三行n个正整数bi,表示面包机制作面包b的时间。
n ≤ 100000;
a,b ≤ 100000;

输出描述:输出一行一个正整数,表示需要花费的最少时间。

示例输入1:
3
2 5 9
4 3 6

输出:
3

示例输入2:
3
2 5 7
2 8 6

输出:
4

答案:

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

int main() {
    int n;
    cin >> n;
    
    vector<int> a(n);
    vector<int> b(n);
    
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 0; i < n; i++) cin >> b[i];
    
    int min_time_same_machine = 1000000;
    for (int i = 0; i < n; i++) min_time_same_machine = min(min_time_same_machine, a[i] + b[i]);
    
    int min_a = 1000000, second_min_a = 1000000;
    int min_b = 1000000, second_min_b = 1000000;
    int min_a_index = -1, min_b_index = -1;
    
    for (int i = 0; i < n; i++) {
        if (a[i] < min_a) {
            second_min_a = min_a;
            min_a = a[i];
            min_a_index = i;
        } 
        
        else if (a[i] < second_min_a) second_min_a = a[i];
        
        if (b[i] < min_b) {
            second_min_b = min_b;
            min_b = b[i];
            min_b_index = i;
        } 
        
        else if (b[i] < second_min_b) second_min_b = b[i];
    }
    
    int min_time_different_machine;
    if (min_a_index != min_b_index) min_time_different_machine = max(min_a, min_b);
    else min_time_different_machine = min(max(min_a, second_min_b), max(second_min_a, min_b));
    
    int result = min(min_time_same_machine, min_time_different_machine);
    
    cout << result << endl;
    return 0;
}

编程题2:

题目描述:
给一个长度为n的序列和一个整数x,每次操作可以选择序列中的一个元素,将其从序列中删去,或者将其值加一。
问至少操作多少次,可以使操作后的序列(可以为空)中数字之和是x的倍数。

输入描述:
第一行两个用空格隔开的正整数n和x,含义如问题描述中所述。
第二行是n个用空格隔开的正整数A[1],A[2],…,A[n],表示序列中n个元素的值。
n ≤ 1000,x ≤ 1000,A ≤ 1000

输出描述:一行一个整数,表示使序列中数字之和是x的倍数所需要的最少操作数。

样例输入1:
1 3
4

样例输出:
1

解释:直接将序列中唯一的元素删去即可。

输入样例2:
3 5
1 3 3

输出:
2

解释:可能的一种操作为,删去最后一个元素,再使第一个元素加一,得到的序列为2 3。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int n, x;
    cin >> n >> x;
    
    vector<int> A(n);
    for (int i = 0; i < n; ++i) cin >> A[i];
    
    int INF = 1000;
    vector<vector<int>> dp(n + 1, vector<int>(x, INF));
    dp[0][0] = 0;  

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < x; ++j) {
            dp[i + 1][j] = min(dp[i + 1][j], dp[i][j] + 1);

            for (int k = 0; k < x; ++k) {
                int new_mod = (j + (A[i] + k) % x) % x;
                dp[i + 1][new_mod] = min(dp[i + 1][new_mod], dp[i][j] + k);
            }
        }
    }

    cout << dp[n][0] << endl;
    return 0;
}

#通信硬件人笔面经互助#
全部评论
动态规划真不会😭
4 回复 分享
发布于 09-05 17:35 辽宁
我就想知道那个输入输出到底咋调啊,😭😭,后面几乎都在调那个
2 回复 分享
发布于 09-05 17:37 北京
已经结束辣!
2 回复 分享
发布于 09-06 12:04 山东
请问,可以选择用C写吗
1 回复 分享
发布于 09-15 15:01 江苏
第一道题我也是这么写的,为什么过不去测试用例,哭了
点赞 回复 分享
发布于 09-05 17:52 陕西
dp不会😭
点赞 回复 分享
发布于 09-05 18:03 安徽
盖亚!!!
点赞 回复 分享
发布于 09-05 21:45 黑龙江
想问一下小米都是过了一面才发笔试吗
点赞 回复 分享
发布于 09-06 00:13 广东
啊啊啊,太离谱了,无法调试,我不小心把循环条件写错了,然后一直报错,找不到原因,框架都写对了考完才发现错误,我哭死
点赞 回复 分享
发布于 09-06 11:48 江苏
点赞 回复 分享
发布于 09-06 14:10 上海
寄了,本来没想投底软开发的,也没刷过题,感觉好难呀
点赞 回复 分享
发布于 09-06 19:23 辽宁
选择考什么内容呀
点赞 回复 分享
发布于 09-07 22:08 北京
楼主你好,我想问一下选择题主要考哪些方面的呀?计算机网络和操作系统还是语言相关的呀?
点赞 回复 分享
发布于 09-15 15:28 浙江
第二题解答,不知道对不对,大家看下。。
点赞 回复 分享
发布于 09-18 11:47 上海
不是哥们,这么难吗。我平时就用dsp搞项目搞实验,我是不是投错岗了
点赞 回复 分享
发布于 09-18 15:00 重庆
选择题大概都是哪部分内容呢
点赞 回复 分享
发布于 10-18 10:38 河北
为啥我安全岗也是考开发啊?
点赞 回复 分享
发布于 10-18 17:58 吉林

相关推荐

10.15&nbsp;更新:已经把这byd玩意开了,翻身做人啦和这位导师共事的每一天都是煎熬,他是java组的,如果你想来松鼠的java,就一定会遇到这个人时间线从&nbsp;9.3号开始,第一天入职总是表现的很美好,情绪稳定,不压力人,还说我先不急让我看看文档再开始从第二天就给我分了七八个任务让我写代码,前端也得自己写,内容不难,但是根本没给时间熟悉,每个需求涉及的业务也没有介绍,字段和表我什么都不知道,直接让我写,就这样写了俩天一天晚上我在会议室参加秋招笔试被他看见了,到工位的时候就开始追问我在干嘛,我说了之后他情绪反弹说&nbsp;“干嘛还参加秋招”后续有一次在岗位他找我谈话,开口谈自己做了多少年.net,多少年java,谈努力,谈上进,谈别人生来就有我们没有更要努力,为了家人公司使用tapd进行任务分配,我原先实习用的是jira,没有了解过这个平台,我初步做完首次需求后他让我看下一个任务,直接丢一句看tapd,然后呢?我看哪?他反复跟我重复看tapd,声音越来越大,最后反问我你说看哪?你没用过tapd吗?反问是他的成名绝技,昨天生产报错,他查完日志是没有对应字段,我在改bug,直接上来就是一句你没加字段吗?我要加什么?你要加什么你不知道吗?(大声且急切)后面发现是别人的需求什么公司让一个实习生发提测邮件?改完第一次需求bug,要提测了,直接开始问我&nbsp;“改完了就提测啊,发邮件啊”&nbsp;?我就是个实习生,我来了就半个月,我能无师自通发邮件?后面还是我主动问其他同事提测的流程工作时长1096(大小周),早上10点可以弹性到10点半,但是你猜怎么着,我每天晚上快十点走,早上10点25左右到,老东西说&nbsp;“你每天都踩点打卡?不要踩点!”,我反问公司不是弹性吗,老东西逆天的说&nbsp;“弹性你也不能天天踩点”&nbsp;得,我踩点也就四五天吧,晚上十点走无偿奉献,早上10点半到还被&nbsp;pua&nbsp;,连半小时都要跟实习生计较,这生活得有多么不如意啊,是领导要裁员还是老婆要离婚?这人有极其高高在上的控制欲,别人跟你说俩句话他都巴不得知道内容然后再找借口骂你他的言语都带有极强的否定性,你想这样?不,按他那样,你以为是这样?不,你一定是错的,他说的是对的,只有真到了指着页面给他看的时候,他才会假装没发生过一样开始看问题除了否定性,情绪性也极为严重,语气高高在上,喜欢大声说话,想让他心平气和跟你说话是很少见的,多少附带骂你几句(对了,还脏话连篇)10月12日,周六,俩期需求上线,此前并未有任何人跟我说,到晚上突然爆出一个雷,同事把master合并到某分支后发生冲突然后咋了又回滚,导致部分同事开发代码丢失,也包括我,我就这样一边改bug,一边配合他们找回遗失的代码,一直到了十点半多才最终送测,到了十一点,我本身已经感冒,此前还跟他请了一天假去医院,他完全知情,到了十一点实在熬不住要回家,他仍旧要我留下改bug,“留下来改完bug”“你确定要走?”最后用带有威胁的语气说出这句&nbsp;“好那你回家吧”在来松鼠ai之前我还充满了期待,想着这是目前最好的offer,四处打听公司待遇,还在幻想网上说的都是半真半假,直到遇到这个逆天玩意,以上仅仅发生在一个月内,还有更多的暂时细说不起来了,也不想再想了导师?除了微乎其微的几次跟你说怎么做,剩下基本都是问同事的,更多是&nbsp;否定&nbsp;侮辱&nbsp;和&nbsp;贬低不针对松鼠AI所有人,在这里的一个月我也遇到很好的同事,儒雅且平易近人,仅仅针对这个逆天玩意至此也由衷希望此贴帮助到大家避雷,认清自我在工作中的关系
offer小狗:宝子,争取润吧,我之前也面过这家公司,没想到你被pua得这么惨,希望宝子离职之后秋招能顺利,未来加油!!大部分的mt都是人比较好的,只能说他生活不顺,把很多气都撒在你身上了,我们只是实习生不受他这无端指责
点赞 评论 收藏
分享
31 120 评论
分享
牛客网
牛客企业服务