2023/3/30拼多多笔试

第一道题
给n个level
每一个level可能是boss也可能是商店
boss爆的物品种类为t
商店只收一种特定物品t,价格为v
弱鸡主角只能拿一种物品
问最多能赚多少钱

记忆化dfs爆内存60%

第二道题树
有n个城市,n-1条道路,首都为1,城市之间必有路径
有些道路坏了
问从首都出发派遣修理队,最少排多少队

递归做出来了

第三道题
看起来像滑动窗口双指针,但是越看越像动态规划
给个数组有正有负有0
问积最大的连续子数组

弱智遍历34%

第四道题
给个数组
可以将数组中数为x的均置0
问最少多少次操作可以将数组变成非递减

没时间看
全部评论
第一题: #include<bits/stdc++.h> using namespace std; const int N = 1e4 + 10; int a[N],w[N]; char v[N]; int f[N][N]; int main() { int n,m; cin >> n >> m; for(int i = 1 ; i <= n ; i++) { cin >> v[i] >> a[i]; if(v[i] == 'm') { cin >> w[i]; } } for(int i = 1 ; i <= n ; i++) { for(int j = 1 ; j <= m ; j++) { if(v[i] == 'm') f[i][0] = max(f[i - 1][0],f[i - 1][j] + w[i]); else f[i][j] = max(f[i-1][j],f[i - 1][0]); } } int res = 0; for(int i = 0 ; i <= m ; i++) { res = max(f[n][i],res); } cout << res << endl; return 0; }
2 回复 分享
发布于 2023-03-30 20:43 辽宁
第一题 n, m = map(int, input().split()) dp = [-1] * (m + 1) for j in range(m + 1): dp[j] = -1 dp[0] = 0 for i in range(1, n + 1): s = input() if s == "b": type = int(input()) t = dp[type] dp[type] = max(dp[0], dp[type]) else: type, v = map(int, input().split()) if dp[type] != -1: dp[0] = max(dp[0], dp[type] + v) res = max(dp) print(res)
2 回复 分享
发布于 2023-03-30 19:03 香港
第一题:没看懂题目描述,第二题:dfs,第三题,leetcode原题152,实现思路是选取两个变量同时维护最大值和最小值,因为最小值是负数,可能下一个数碰到就是最大值了,第四题:感觉像求最长非递减序列,通过动态规划可以做(楼主能记住这么多题很棒了!!!)
1 回复 分享
发布于 2023-03-30 18:49 辽宁
可惜了 第四题很简单的 不过也很强了
1 回复 分享
发布于 2023-03-30 18:01 江苏
请问pdd笔试全是编程题吗,就四题吗
点赞 回复 分享
发布于 2023-04-15 22:07 江苏
还是待笔试是不是就是笔试挂了...
点赞 回复 分享
发布于 2023-04-02 19:40 上海
第一题就是找最近同类型,然后dp[i] = dp[pre-1] + value。第二题就是个dfs,从子节点回来看子节点是不是修了,修了就把自己和父节点的路修了。第三题就分段,找最远的负数,数值用前缀和记录2的个数。最后一题就是从前往后,写个单调栈,每次出现逆序对就清空栈
点赞 回复 分享
发布于 2023-03-30 23:54 湖北
请问一下每道题过了一部分也有相应的分数嘛?
点赞 回复 分享
发布于 2023-03-30 23:42 重庆
第一题dp了一个小时,没做出来 第二题想了会,觉得应该很难就没想了 第三题想到了dp,但是数字太大,也联想到了给的数字全是2的多少次方,没把两个放在一块想 第四题测试样例都过不了。。。。
点赞 回复 分享
发布于 2023-03-30 23:37 重庆
一模一样😅我太菜了
点赞 回复 分享
发布于 2023-03-30 17:41 江苏
爆内存的第一题,写完看到那个ifelse我就不想改成迭代的了
点赞 回复 分享
发布于 2023-03-30 17:31 湖北
唯一做出来的第二道题 ``` int findMinCnt(unordered_map<int, vector<pair<int, bool>>>&amp; tree, int root) { //get from root min nums of workers need send to sub tree //返回以当前为根发送最少数量 if (tree.find(root) == tree.end()) { return 0; } auto sub_roots = tree[root]; int ret = 0; for (auto [sub_root, path_ok] : sub_roots) { if (path_ok) { ret += max(findMinCnt(tree, sub_root), 0); } else { ret += max(findMinCnt(tree, sub_root), 1); } } return ret; } ```
点赞 回复 分享
发布于 2023-03-30 17:18 湖北

相关推荐

不愿透露姓名的神秘牛友
2025-12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下&nbsp;HR&nbsp;会来跟你谈。”&nbsp;我当时脑子直接宕机,一句话都没憋出来。后面&nbsp;HR&nbsp;找我谈话,直属领导也在旁边。HR&nbsp;说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
评论
2
9
分享

创作者周榜

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