我也一样,第一题找不出bug,只过了用例
点赞 评论

相关推荐

------------------------------------题目一:题目大意:有 n (1 <= n <= 2e5) 本书,编号为 ai (0 <= ai <= 1e9)。你需要将它们放入若干个临时书架(先进先出队列),要求奇数编号和偶数编号的书不能混放。最终,你需要从这些书架中按顺序取出书本,形成一个严格递减的序列。问最少需要多少个临时书架。解法思路:奇偶性限制使得奇数和偶数两组书的处理是完全独立的。对于每一组(例如奇数),为了能按顺序取出形成一个严格递减序列,放入同一个书架的书必须是原序列中的一个严格递减子序列。因此,问题转化为:将奇数子序列和偶数子序列分别拆分成最少数目的严格递减子序列。根据Dilworth定理,一个序列最少能被划分成的递减子序列的数量,等于其最长严格递增子序列(LIS)的长度。所以,分别求出奇数序列和偶数序列的LIS长度,两者相加即为答案。LIS可用经典的O(n log n)算法求解。------------------------------------题目二:题目大意:有 n (1 <= n, m <= 1000) 个部门和 m 个项目,部门权重为 ai,项目难度为 bj (1 <= a, b <= 1e4)。还有一个 n x m 的绩效矩阵 vij (1 <= v <= 1e4)。总绩效为所有 wij = vij * (ai + bj) 的和。你可以任意交换部门的顺序(行和a的顺序),也可以任意交换项目的顺序(列和b的顺序),目标是最大化总绩效。解法思路:关键在于对总绩效公式进行数学变形。总绩效 = Sum(vij * (ai + bj)) = Sum(vij*ai) + Sum(vij*bj)。将求和顺序改变可得:Sum(ai * Sum_j(vij)) + Sum(bj * Sum_i(vij))。这等价于 `部门权重向量a` 与 `矩阵行和向量` 的点积,加上 `项目难度向量b` 与 `矩阵列和向量` 的点积。根据排序不等式,两个向量的点积在它们同序排序时最大。因此,先计算出矩阵的所有行和与列和。然后,将部门权重a和行和向量都按降序排序后计算点积,再将项目难度b和列和向量都按降序排序后计算点积,两者相加即为最大总绩效。------------------------------------题目三:题目大意:有 n (1 <= n <= 1e5) 个服务区域,每个区域是数轴上的一个闭区间 [li, ri] (|li|,|ri| <= 1e9)。你需要选择一个整数点 x 作为仓储中心,使得总运输成本最小。单个成本定义为:如果 x 在区间内,成本为0;否则成本是 x 到该区间最近端点的距离。解法思路:这是一个经典的几何中位数问题。总成本函数是所有单个成本函数的和,而每个单个成本函数 `cost(x)` 都是一个V形的凸函数。多个凸函数之和仍然是凸函数,其最小值点可以通过分析斜率变化找到。总成本函数的斜率在每个区间的端点 `li` 和 `ri` 处发生变化。当 x 从负无穷向正无穷移动时,初始总斜率为-n,每经过一个端点,斜率就加1。当斜率从负数变为非负数时,就到达了成本最小的位置。这个位置恰好是所有 `2n` 个端点(所有 `li` 和 `ri` 的集合)的中位数。因此,只需收集所有 `2n` 个端点,找到它们的中位数作为最优选址x,然后计算总成本即可。具体的详细代码和题解可以戳我主页的文章查看
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
08-11 11:34
已编辑
南京大学 Java
秋招还没有投递简历,就被hr强行加微信(字节你是真饿了😂)约面。部门很核心,所以还是接下了面试面试时间:110分钟1. 一上来还是先自我介绍(刚开始听错了还以为面试官说“我先做个自我介绍吧”,结果四目相对了几秒一直没反应才发现不对劲匆匆开始自我介绍)2. 面试官手里拿的实际还是我暑期的简历,我自我介绍提到有字节和美团两段实习,所以理所当然的开始拷打实习。这部分问了好久,几乎每段实习中做的每一个项目都被问到了细节(我发现复杂一些的业务真不好讲清楚,单纯靠文字表达繁琐的业务细节真的太受限了,导致几乎不可能让对方完全听明白整个业务流程)3. 手撕,给一个二维列表,要求得到所有可能的的排列组合。明显的回溯题,结果我不知道因为好久没做题手感生疏了还是什么原因,脑袋缺根弦似的说想用多指针依次遍历写一半发现写不出来苦笑着说还是用回溯吧。最后出了点小偏差,没法打断点于是肉眼debug了好久。我以为面试官会直接结束面试,没想到就一直等着我debug完成(感动)4. 问项目,hmdp里秒杀的幂等怎么做的。从业务层redis分布式锁和存储层唯一索引兜底两方面说。追问唯一索引具体怎么实现,回答在订单表中建立用户id+商品id+秒杀活动id三字段联合索引,确保同一用户在同一活动中只能购买一件同一商品反问:1. 一共几轮面试?(两轮或三轮技术面)2. 对校招生的期待和自身尚存的不足?(这里聊了久挺。总体来讲就是说我整体知识储备在校招生中算比较强的,但具体的技术落地相对薄弱一些,简历略高于自身实际工程能力(更不敢包装了))反反问:1. 进程和线程的区别?2. 有了解过Linux操作系统内核吗?总的来说面试体验很好,本以为这种hr主动拉人的都是kpi面,但实际上能感受到面试官对我还挺有兴趣的,实习挖了好久,到后面基本上都是在聊天,他后面也时不时穿插一下自己做业务的经历感受---------------8.11更新 已约二面
野猪不是猪🐗:我发现一个问题,为什么牛客上一刷面经都是八股轰炸,我自己去面(无论是暑期还是这次)就都是全程项目/实习拷打那我背了这么多八股算什么
查看6道真题和解析
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务