拼多多笔试题解(2020-09-01晚)

拼爹爹笔试(2021届提前批-服务端研发工程师笔试 2020-09-01 19:00:00 -- 21:00:00),共四道编程题

题面:
1. 给一个n(4<=n<=200),输出一个n*n的矩阵,要求在矩阵中画一个米字,处于米字边界线的格子置0,其余格子按逆时针顺序填充1~8的数字
2. 给一个m*n的矩阵,矩阵由0和1组成,1表示一个士兵,相连(上下左右视为相连)的士兵组成一个团队,现在可以移动一个已有士兵到任何位置,求一个团队最多能有多少个士兵
3. 经典背包问题,只不过体积和价值可能为负数
4. 给一个n(n<=1e9)和m(m<=10)个数,一个数能被这m个数中的某个数整除的数被称为好数,求[1,n]中有多少个好数

题解:
1. 暴力,分9个case讨论
2. 先跑一遍bfs,得到连通块的编号及其计数。再遍历一遍,对于所有0的块,统计上下左右4个格子不同的连通块数量,如果还有其他的连通块,意味者可以从其他连通块“偷一个1”,更新ans
3. 经典背包拓展,负数的问题可以将0加一个偏移量解决,但是还有一个问题,就是体积为负数必须先计算,否则正确性不对,所以先按体积从小到大排下序,保证负数在前面,再正常背包即可。
4. 容斥原理,求所有m的集合,在这个集合的所有数,求一下lcm,如果|集合|是奇数,ans+=n/lcm,否则ans-=n/lcm

#笔经##拼多多##C++工程师#
全部评论
代码可以分享下么
1 回复 分享
发布于 2020-09-01 21:17
请问第三题为什么一定要负数的体积在前面呢
1 回复 分享
发布于 2020-09-01 21:12
请问大佬,你说的“负数的问题可以将0加一个偏移量解决”是什么意思啊,能说的详细点吗
点赞 回复 分享
发布于 2020-09-01 23:07
第二题我,先统计1的个数,然后当0时判断上下左右 是否至少有2个方向为1,这样的话就填充该位置,然后dfs,ac 0.85 超时了
点赞 回复 分享
发布于 2020-09-01 21:31
就我一个人0AC,害
点赞 回复 分享
发布于 2020-09-01 21:29
第二题思路一样,过了0.75
点赞 回复 分享
发布于 2020-09-01 21:28
背包问题不是说有一半的用例没有负数吗?😭我照着01背包写的怎么还是0呢
点赞 回复 分享
发布于 2020-09-01 21:12
我可能是个废物😫
点赞 回复 分享
发布于 2020-09-01 21:11
牛逼!我都靠混的
点赞 回复 分享
发布于 2020-09-01 21:10
mark
点赞 回复 分享
发布于 2020-09-01 21:10
大佬贴个代码吧😁
点赞 回复 分享
发布于 2020-09-01 21:09
mark,问一下,第一题暴力,奇数偶数要分吗
点赞 回复 分享
发布于 2020-09-01 21:08
为啥我第二题这样只过了70,害
点赞 回复 分享
发布于 2020-09-01 21:07
mark一下
点赞 回复 分享
发布于 2020-09-01 21:07
大佬牛皮 可以贴代码学习一下吗
点赞 回复 分享
发布于 2020-09-01 21:07
Mark膜大佬,现在一看很清晰,自己写咋就没想到
点赞 回复 分享
发布于 2020-09-01 21:07
mark,膜拜大佬
点赞 回复 分享
发布于 2020-09-01 21:05

相关推荐

有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
现在才开始投还有可能吗😭😭😭
牛客621925249号:开秋招了已经
点赞 评论 收藏
分享
评论
18
68
分享

创作者周榜

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