PDD 服务端研发工程师笔试 0914
#pdd##拼多多求职进展汇总##拼多多#
四道题 40min
比某需要手写输入输出的简单 我说的()
11:35 一更
怎么这 性格测试 也要双机位 太抽象了
12:01 二更
t1 字符串
从A串构建B串,方法为:A串每个长度为2的子串连接成一起
给B串,反推A串
t2 发货
n, m, x
n天可以发货,一共要发m个货, 每天最多发x次
ai 表示第i天发货多少钱
bj 表示第j个包裹要在第j天或之前发货
求发完货最少需要多少钱
t3 水晶
n个水晶,每个水晶能量为ai
求多少个子串满足 子串size = SUM(a[i..j])
t4 序列分数
一个长度为n的序列,q次查询
每次给出x和y,可以进行任意次交换操作
然后
求sum(a[0..(int)(n / x)]) - sum(a[0..(int)(n / y)])可能的最大值
样例n = 7, x = 2, y = 3 即(a2 + a4 + a6) - (a4 + a6)
题解
t1
去掉尾部,输出奇数位的字符串
然后加上尾部
t2
贪心 + 懒删除(?)
排序包裹从小到大处理
小根堆维护当前最低的价格,同时记录可以在这个价格发货的天数的出现次数,暴力塞就完事
然后判次数是否已经耗尽,耗尽就弹出
t3
易知求prefix_sum[i] = prefix_sum[j - 1] + (i - j + 1)
推出 prefix_sum[i] - i - 1 = prefix_sum[j - 1] - j
蛤希表维护后者,O1查询
t4
贪心,放左边的越大越好,放右边的越小越好
维护升序、降序两个排序后的序列的前缀和
左边的个数为 n / x 右边的个数为 n / y(废话)
但是存在重复
重复应该是 n / 最小公约数(x, y)
即 n / (x * y / gcd(x, y))
去掉重复的个数后
用前缀和O1取最大的 - 最小的
四道题 40min
比某需要手写输入输出的简单 我说的()
11:35 一更
怎么这 性格测试 也要双机位 太抽象了
12:01 二更
t1 字符串
从A串构建B串,方法为:A串每个长度为2的子串连接成一起
给B串,反推A串
t2 发货
n, m, x
n天可以发货,一共要发m个货, 每天最多发x次
ai 表示第i天发货多少钱
bj 表示第j个包裹要在第j天或之前发货
求发完货最少需要多少钱
t3 水晶
n个水晶,每个水晶能量为ai
求多少个子串满足 子串size = SUM(a[i..j])
t4 序列分数
一个长度为n的序列,q次查询
每次给出x和y,可以进行任意次交换操作
然后
求sum(a[0..(int)(n / x)]) - sum(a[0..(int)(n / y)])可能的最大值
样例n = 7, x = 2, y = 3 即(a2 + a4 + a6) - (a4 + a6)
题解
t1
去掉尾部,输出奇数位的字符串
然后加上尾部
t2
贪心 + 懒删除(?)
排序包裹从小到大处理
小根堆维护当前最低的价格,同时记录可以在这个价格发货的天数的出现次数,暴力塞就完事
然后判次数是否已经耗尽,耗尽就弹出
t3
易知求prefix_sum[i] = prefix_sum[j - 1] + (i - j + 1)
推出 prefix_sum[i] - i - 1 = prefix_sum[j - 1] - j
蛤希表维护后者,O1查询
t4
贪心,放左边的越大越好,放右边的越小越好
维护升序、降序两个排序后的序列的前缀和
左边的个数为 n / x 右边的个数为 n / y(废话)
但是存在重复
重复应该是 n / 最小公约数(x, y)
即 n / (x * y / gcd(x, y))
去掉重复的个数后
用前缀和O1取最大的 - 最小的
全部评论
第二题真抽象, 没开long long, 直接过0用例, 我还以为算法有问题 看半天, 结果开long long后直接ac了.
问一下第三题怎么做呢,就是什么多多挖水晶,我滑动窗口一直超时

果然是大佬,做这么快
大佬好强,我写了一个多小时写不出来就直接交卷了,这个笔试的题有地方看题解吗?
佬问一下t2,我没oc,除了你这里写的逻辑外,是不是还需要判断堆顶最小价格对应时间是否 <= 当前bi的时间(最晚时间),不是的话还需要弹出堆顶并暂存起来,往后找,找到后再压回堆?
前端编程题答题区是文本编辑器
,没办法调试。服务端也是吗?
好久 我只有两题 第二题卡了半天,应该先做第四题的,贪心处理应该就可以了
第二题直接放弃
牛
相关推荐
09-14 11:48
门头沟学院 Java 点赞 评论 收藏
分享
昨天 11:50
华中科技大学 Java 点赞 评论 收藏
分享