拼多多 笔试
#拼多多集团-PDD笔试#
1.5h AK交卷了
前两题签到,后面两题大概 cf 1400 左右难度
第三题:一开始以为是背包,后面看了下量级复杂度过不了,然后重新审题发现是求最大可取货物量,将物品数组从小到大排序,用 can[i] 表示以第 i 个物品为最小价值一个背包最多拿多少个物品。遍历一遍(双指针)初始化好 can 后,从右往左遍历 suf[i] 记录后缀最大 can 值,然后从左到右取最大 can[i]+suf[i+can[i]],排序贪心复杂度 O(nlogn)
第四题:一开始以为 dfs 序或者 topo 排序找一些性质,求最大回路(题意一开始不是很好懂),然后模拟一下可以发现,只有当前主路连向下一个主路的头尾的两个节点不重合时才能向右扩展合并,如果两个节点重合那就必须在这一层绕成圈和之前左边的主路合并,直接从左到右遍历,注意每一层都有两种取法——向右拓展和直接在当前层绕圈回去,复杂度 O(n)
1.5h AK交卷了
前两题签到,后面两题大概 cf 1400 左右难度
第三题:一开始以为是背包,后面看了下量级复杂度过不了,然后重新审题发现是求最大可取货物量,将物品数组从小到大排序,用 can[i] 表示以第 i 个物品为最小价值一个背包最多拿多少个物品。遍历一遍(双指针)初始化好 can 后,从右往左遍历 suf[i] 记录后缀最大 can 值,然后从左到右取最大 can[i]+suf[i+can[i]],排序贪心复杂度 O(nlogn)
第四题:一开始以为 dfs 序或者 topo 排序找一些性质,求最大回路(题意一开始不是很好懂),然后模拟一下可以发现,只有当前主路连向下一个主路的头尾的两个节点不重合时才能向右扩展合并,如果两个节点重合那就必须在这一层绕成圈和之前左边的主路合并,直接从左到右遍历,注意每一层都有两种取法——向右拓展和直接在当前层绕圈回去,复杂度 O(n)
全部评论
27届实习机会或看我住业 https://careers.pddglobalhr.com/campus/intern?t=4OmKPVeX9a
相关推荐
昨天 17:53
湖南大学 C++ 点赞 评论 收藏
分享
