携程算法岗笔试【20230525】

news/2024/11/20 13:45:12/

前两天写了携程的一道笔试题,感觉题目质量挺不错,这里记录一下。

1. 题目

题目大意如下:
现有n套试卷,每套试卷包含的题目数是i。游游每天的早上和下午都可以选择做一套试卷,当然也可以选择摸鱼(不做题),但是必须满足游游每天做的题目是k的整数倍。求游游最多可以做几天的题?
输入:第一行是n,k;第二行是每套试卷的题数组成的一个数组。
输出:游游最多可以做多少天的题?
样例输入:

5 3 
1 2 3 4 5

样例输出:3
样例解析:

  • 第一天上午做1题,下午做5套题
  • 第二天上午做2题,下午做4题
  • 第三天上午做3题,下午摸鱼
    总共可以做三天。

2.分析

其实这题难在:如何匹配?比如说你怎么知道1要和5搭配,而2就和4搭配?因此暴力的方法行不通。于是尝试考虑使用动态规划的方法。这题用dp来解就非常巧妙。
我们dp[i] 表示第i套卷可以得到的最大天数。 这个令的过程是dp的精华,当然这也不是我一个人想出来的,小师妹跟我一起思考这个问题,然后我就想出来了。
得到假设之后,就需要考虑怎么得到递推式了,即dp[i] 与 dp[i-1]的关系。 其实主要分成两部分:

  • 如果第i天的作业量刚好是k的倍数,那么直接在 dp[i-1]的基础上+1,
  • 如果第天的作业量不是k的倍数,那么就需要判断前面是否有剩余的作业题可以和当前补成k的倍数,如果能补,那么就是 dp[i] = dp[i-1] + 1, 如果不能补,那么就是dp[i] = dp[i-1]

3. 代码

上面这个思想的代码能直接AC笔试题,这里不再给出了。


http://www.ppmy.cn/news/98458.html

相关文章

6.6.4 PCS创建Oracle 资源及资源组

在RHCS体系中,Oracle的启动是按以下顺序进行的: VIP。监听器。逻辑卷(ISCSI共享出来的)。文件系统(在逻辑卷上创建)。数据库实例。 上边这些资源,在PCS里创建好以后,将其组合成一个…

注册的业务、登录业务、个人中心、nginx配置【VUE项目】

登录与注册静态组件-(处理共用图片资源问题) 登录与注册功能(git):必须要会的技能 登录与注册的静态组件assets文件夹----全部组件共用的静态资源在样式当中也可以使用符号【src别名】,切记在前面加上~ …

【Redis】共同关注列表与基于Feed流的关注消息滚动分页推送的实现

目录 一、共同关注 1、思路 2、实现步骤 二、Feed流 1、概念 2、需求 3、TimeLine的三种模式 1.拉 2.推 3.推拉结合 4、TimeLine三种模式的区别 三、关注推送 1、需求 2、实现思路 3、Redis数据结构的选择 4、滚动分页 5、代码实现 1.博主 2.粉丝 一、共同关…

零基础自学黑客【网络安全】啃完这些足够了

我刚学网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选? 怎么入门? 这个 Web 安全学习路线,整体大概半年左右,具体视每个人的情况而定。 (上传一直很模糊&#xff0c…

算法|10.从暴力递归到动态规划3

算法|10.从暴力递归到动态规划3 1.纸牌游戏 题意:给定一个整型数组arr(都是正数),代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿。但是每个玩家每次只能拿走最左…

RepGhost 解析

paper:RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization official implementation:https://github.com/chengpengchen/repghost 存在的问题 特征重用feature reuse是轻量网络设计中常用的一种技术,现有的方法通常使…

Java字符集/编码集

1 字符集/编码集 基础知识 计算机中储存的信息都是用二进制数表示的;我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果 按照某种规则, 将字符存储到计算机中,称为编码。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。这里强调一下: 按照…

第三章:什么是分库分表

文章目录 背景什么是分库分表为什么要分库分表性能可用性什么时候考虑分库分表什么时候分库什么时候分表背景 一个系统当伴随着用户量的激增,业务数据的不断增加,数据库表中的数据越来越多,如果再去对我们数据库中的表进行curd操作的时候,就会造成一些性能上的瓶颈问题! …