拼多多笔试5.26

4道编程题,双机位

人麻了

1.n张卡片,每轮发一张卡片,每张卡片数值为ai,有一个正整数m,要求玩家凑齐1到m内所有正整数时,可用这m张卡片兑换一次奖励。现给出n张卡片和正整数m,问玩家可以在第几轮获得奖励,若一次奖励都没有则输出"Impossible"。有t组数据。

AC

思路:每轮存入ai时,同时判断长度为m的辅助数组内的每个值是否全大于0,若大于0说明本轮可以兑换奖励,将辅助数字所有元素--表示消耗掉了这m张卡片

麻烦点:输出格式,对于每一轮的结果需要占一行,本鼠忘了\n的用法,试了好好几次总算正确了

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) { 
        	int t = in.nextInt();
        	for(int i = 0;i<t;i++) {
            	int cur = 0;
        		int n = in.nextInt();
                int m = in.nextInt();
                int arr[] = new int[n];
                int ar[] = new int[m];
                for(int j = 0;j<n;j++) {
                	arr[j] = in.nextInt();
                	if(arr[j]>0 && arr[j]<=m)ar[--arr[j]]++;
                	int flag = 1;
                	for(int k = 0;k<m;k++) {
                		if(ar[k]== 0) {
                			flag = 0;
                			break;
                		}
                	}
                	if(flag == 1) {
            			cur = 1;
                		for(int p = 0;p<m;p++) {
                			ar[p]--;
                		}
                		int res = j+1;
            			System.out.print(res+" ");	
                	}
                }
                if(cur == 1)System.out.print("\n");
                else System.out.println("Impossible");
        	}
            
        }
    }
}

2.长度n的01串,每次操作选择i表示会将除了位置i和位置i+1外的数字反转,若i为n,则表示除n外都反转。

问在进行m次操作后,使该01串表达的值最小,这个01串是什么。有t组数据。

...

3.n个正整数,可做若干个操作,每次操作选择任意一个数,使其++。

现有q次询问,在第i次询问,问最少要多少次操作(操作可以不做)使第k大的数=x。

若无论多少次操作都无法实现输出"Impossible"。每次询问都针对原始数组。第k大表示降序排序后排在第k个的那个数。

...

4.存储容量n,最多存n条数据。

写模块每次固定写入p条数据,当剩余不足p时,无法写。

读模块每次固定取出q条数据,并释放相应存储,当已有元素个数小于q时,无法读。

当剩余<p,已有<q时,显然死锁。

给定n,p,q,问是否会出现死锁。有t组数据。

...

欢迎大家讨论,感觉变换操作题比例很大,苦手呀

#我的实习求职记录#
全部评论
ac了第一题,第三题通过用例12.5%,,2、4题没有做,今天收到面试邀请了
1 回复 分享
发布于 2024-05-27 20:10 湖南
佬太强了,第一题一样的思路就是ac不出来
1 回复 分享
发布于 2024-05-26 21:54 北京
有c++的吗?😅vector的push_back段错误了,兄弟人都麻了
1 回复 分享
发布于 2024-05-26 21:52 湖南
第二题不就是逆向思维嘛,先整体反转m次,然后贪心从左往右反转最高位的1,直到m次用完
点赞 回复 分享
发布于 2024-05-28 10:42 安徽
只写出来了1和3,其他的没思路😰
点赞 回复 分享
发布于 2024-05-27 09:31 上海
a了134题,第二题没啥思路直接交了,有人有思路吗,找到了一些性质,感觉应该不会很复杂,类似贪心
点赞 回复 分享
发布于 2024-05-26 23:19 广东
楼主你第一题复杂度应该跑不过第一题吧
点赞 回复 分享
发布于 2024-05-26 22:38 英国
佬们写出来了几道题,我就写出来了第一题不知道能不能进面呐
点赞 回复 分享
发布于 2024-05-26 21:56 浙江

相关推荐

点赞 评论 收藏
分享
09-10 13:36
已编辑
四平职业大学 机器学习
岗位:大模型基座方向一面:首先就是项目拷打,由于我的简历项目比较垂直,硕士以来的经历与Infra都比较相关,所以面试官大部分时间都在问我的项目+实习的经历,并且拷打并不是很深入,即便很多项目的细节已经不太记得了,但是没有问到,所以也答得都很流畅;然后问我对于TVM以及Triton是否有一些了解,由于这两个都是属于编译相关的Infra,与我在校的经历都比较相关,在做自己课题的时候都关注并学习过,所以答得也很流畅,一面面试官应该是对我还是蛮满意的,所以面试到最后,已经1小时了,才开始做手撕,题目是:用CUDA实现Softmax算子,但是CUDA我只是之前在硕士上课的作业中写过1,2次CUDA代码,其实并不是非常熟悉,然后隔了又比较久,语法已经不怎么记得了,所以和面试官说了情况,面试官说那你就把怎么优化编写这个算子讲一下思路,然后就是讲了一下思路,思考了3分钟左右,回答上来了,面试官说你这有点慢了哈,但是感觉面试官整体还是比较满意的,所以比较轻松的就结束了一面PS:但是这也是我后续二面表现较差的原因之一吧二面:由于一面觉得自己和面试官聊的比较开心,然后就比较懈怠二面吧,尤其那段时间正好是实习最忙的一段时间,所以就没怎么准备面试内容。同样,二面主要是项目拷打,但是不一样的是这轮的面试官挖项目经历很深,问得非常细节,印象很深的是问得实习刚来的时候做的一个工作,由于刚来实习其实对于整个大模型的架构并不是很了解,只是把MoE一种通信方式的多流优化特性迁移到另一种通信方式上,对于其中的计算过程以及具体多流并行的算子印象并不是很深刻,然后面试官一直追问这个问题,而且距离那个工作已经过去快2个月了,当时的理解不深加上时间比较久已经忘记得差不多了,所以导致只能和面试官说自己不记得具体细节了,可能就给面试官留下了不好的印象(尤其还是人才计划)然后就是最后的手撕环节了,这个题目印象比较深,但是很久没刷过题了,而且也确实非常菜,导致没做出来最优解:题目是:有一个k值以及一个有序数组a[n](升/降序都可以),a[i]任意整数,需要求解表达式&nbsp;|&nbsp;|&nbsp;a[i]&nbsp;|&nbsp;-&nbsp;|&nbsp;k&nbsp;|&nbsp;|的值最小,这个题暴力求解非常简单,属于一眼出答案,我看完题和面试官就讲了暴力遍历数组就可以得到计算结果的方式,然后面试官就问有没有更优的解法,我知道可以通过二分通过O(logN)的复杂度最优解,但是这个区间考虑比较复杂,当时已经被前面的问题搞得没什么心态了,也没有仔细考虑区间的关系,最后就只用一次二分做了这个题,但是实际上需要3次二分,导致二面没有通过,然后后续被通知说一面,二面,面评差距大,所以转正式批了,但是最后转到正式批流程也没有被捞,导致正式批流程也结束了
查看5道真题和解析
点赞 评论 收藏
分享
评论
5
16
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务