快手2019年秋季校园招聘笔试试卷—工程A试卷

a/b

题目描述

求 a/b 的小数表现形式。如果 a 可以整除 b 则不需要小数点。如果是有限小数,则可以直接输出。如果是无限循环小数,则需要把小数循环的部分用"()"括起来。

输入描述

两个整数a和b,其中

  • 0 <= a <= 1000 000

  • 1 <= b <= 10 000

输出描述

一个字符串,该分数的小数表现形式。

解题思路

当某个余数重复出现时,说明为无限循环小数。需要记录每个余数的位置。

代码实现
int main() {int a, b;scanf("%d%d", &a, &b);int x = 0;while (a >= b)x++, a -= b;if (a == 0) {printf("%d", x);return 0;}int idx = 0;string s;unordered_map<int, int> mp;while (a > 0 && mp.find(a) == mp.end()) {mp[a] = idx;a *= 10;s.append(to_string(a / b));a -= a / b * b, idx++;}if (a != 0) {idx = mp[a];s = s.substr(0, idx) + "(" + s.substr(idx) + ")";}s = to_string(x) + "." + s;printf("%s", s.c_str());return 0;
}

时间复杂度: O ( b ) O(b) O(b),余数最多有 b b b 个。

空间复杂度: O ( b ) O(b) O(b)

善变的同伴

题目描述

又到了吃午饭的时间,你和你的同伴刚刚研发出了最新的GSS-483型自动打饭机器人,现在你们正在对机器人进行功能测试。

为了简化问题,我们假设午饭一共有N个菜,对于第i个菜,你和你的同伴对其定义了一个好吃程度(或难吃程度,如果是负数的话……)A[i],
由于一些技(经)术(费)限制,机器人一次只能接受一个指令:两个数L, R——表示机器人将会去打第L~R一共R-L+1个菜。

本着不浪费的原则,你们决定机器人打上来的菜,含着泪也要都吃完,于是你们希望机器人打的菜的好吃程度之和最大。

然而,你善变的同伴希望对机器人进行多次测试(实际上可能是为了多吃到好吃的菜),他想知道机器人打M次菜能达到的最大的好吃程度之和。

当然,打过一次的菜是不能再打的,而且你也可以对机器人输入-1, -1,表示一个菜也不打。

输入描述

第一行:N, M。

第二行:A[1], A[2], …, A[N]。

输出描述

一个数字S,表示M次打菜的最大好吃程度之和。

解题思路

最大 m m m 段字段和的变形。

d p [ i ] [ j ] dp[i][j] dp[i][j] = 将前 i i i 项划分为 j j j 段且第 j j j 段包含第 i i i 项的最大 j j j 段和,则有

  • a i a_i ai 单独作为一段,则 d p [ i ] [ j ] = m a x ( d p [ x ] [ j − 1 ] ) + a i dp[i][j] = max( dp[x][j-1]) + a_i dp[i][j]=max(dp[x][j1])+ai,其中, j − 1 ≤ x ≤ i − 1 j-1 \leq x \leq i-1 j1xi1
  • a i a_i ai 与前项同在一段,则 d p [ i ] [ j ] = d p [ i − 1 ] [ j ] + a i dp[i][j] = dp[i-1][j] + a_i dp[i][j]=dp[i1][j]+ai

d p [ i ] [ j ] = m a x ( d p [ x ] [ j − 1 ] , d p [ i − 1 ] [ j ] ) + a i dp[i][j] = max( dp[x][j-1], dp[i-1][j]) + a_i dp[i][j]=max(dp[x][j1],dp[i1][j])+ai

故,答案为 m a x ( d p [ x ] [ y ] ) max(dp[x][y]) max(dp[x][y])

代码实现
int main() {int n, m;scanf("%d%d", &n, &m);int a[n + 1], dp[n + 1][m + 1], res = 0;for (int i = 1; i <= n; ++i)scanf("%d", &a[i]);memset(dp, 0, sizeof dp);for (int i = 1; i <= n; i++) {for (int j = 1, jl = min(i, m); j <= jl; j++) {dp[i][j] = dp[i - 1][j];for (int k = j - 1; k < i; k++)dp[i][j] = max(dp[i][j], dp[k][j - 1]);dp[i][j] += a[i];res = max(res, dp[i][j]);}}printf("%d", res);return 0;
}

时间复杂度: O ( m × n 2 ) O(m \times n^2) O(m×n2)

空间复杂度: O ( m n ) O(mn) O(mn)

优化实现
  1. d p [ i ] [ j ] = m a x ( d p [ x ] [ j − 1 ] , d p [ i − 1 ] [ j ] ) + a i dp[i][j] = max( dp[x][j-1], dp[i-1][j]) + a_i dp[i][j]=max(dp[x][j1],dp[i1][j])+ai 可知,在计算第 j j j 列时,只用到第 j − 1 j-1 j1 和第 j j j 列,故可将 d p dp dp 数组第二维大小由 m m m 降至 2 2 2

  2. 为便于书写,交换原 d p dp dp 数组 i i i j j j 的含义,递推式变为 d p [ i ] [ j ] = m a x ( d p [ i − 1 ] [ x ] , d p [ i ] [ j − 1 ] ) + a i dp[i][j]=max(dp[i-1][x],dp[i][j-1]) + a_i dp[i][j]=max(dp[i1][x],dp[i][j1])+ai

  3. 观察以下两等式

    • d p [ i ] [ j ] = m a x ( d p [ i − 1 ] [ x ] , d p [ i ] [ j − 1 ] ) + a i dp[i][j]=max(dp[i-1][x],dp[i][j-1]) + a_i dp[i][j]=max(dp[i1][x],dp[i][j1])+ai x ≤ i − 1 ≤ j − 1 x \leq i-1 \leq j-1 xi1j1
    • d p [ i ] [ j − 1 ] = m a x ( d p [ i − 1 ] [ x ] , d p [ i ] [ j − 2 ] ) + a i dp[i][j-1]=max(dp[i-1][x],dp[i][j-2]) + a_i dp[i][j1]=max(dp[i1][x],dp[i][j2])+ai x ≤ i − 1 ≤ j − 2 x \leq i-1 \leq j-2 xi1j2

    可令 p m = m a x ( d p [ i ] [ x ] , d p [ i ] [ j − 2 ] ) pm=max(dp[i][x],dp[i][j-2]) pm=max(dp[i][x],dp[i][j2]),则

    • d p [ i ] [ j ] = m a x ( p m , d p [ i − 1 ] [ j − 1 ] , d p [ i ] [ j − 1 ] ) dp[i][j]=max(pm,dp[i-1][j-1],dp[i][j-1]) dp[i][j]=max(pm,dp[i1][j1],dp[i][j1])
    • p m = m a x ( p m , d p [ i − 1 ] [ j − 1 ] ) pm = max(pm,dp[i-1][j-1]) pm=max(pm,dp[i1][j1])
int main() {typedef long long ll;int n, m;scanf("%d%d", &n, &m);ll a[n + 1], dp[2][n + 1], pm, res = 0;for (int i = 1; i <= n; ++i)scanf("%lld", &a[i]);memset(dp, 0, sizeof dp);for (int i = 1; i <= m; i++) {pm = dp[i & 1][i - 1] = -1e18;for (int j = i, t = n - m + i; j <= t; j++) {pm = max(pm, dp[(i - 1) & 1][j - 1]);dp[i & 1][j] = max(dp[i & 1][j - 1], pm) + a[j];res = max(res, dp[i & 1][j]);}}printf("%lld", res);return 0;
}

时间复杂度: O ( m n ) O(mn) O(mn)

空间复杂度: O ( n ) O(n) O(n)

最小代价爬楼梯

题目描述

你需要爬上一个 n 层的楼梯,在爬楼梯过程中, 每阶楼梯需花费非负代价,第i阶楼梯花费代价表示为 cost[i] , 一旦你付出了代价,你可以在该阶基础上往上爬一阶或两阶。

你可以从第 0 阶或者 第 1 阶开始,请找到到达顶层的最小的代价是多少。

n 和 cost[i] 皆为整数。

数据范围: 2≤𝑛≤1000 , 0≤𝑐𝑜𝑠𝑡[𝑖]≤1000。

输入描述

输入为一串半角逗号分割的整数,对应cost数组。

输出描述

输出一个整数,表示花费的最小代价。

解题思路

d p [ i ] dp[i] dp[i] = 到达第 i i i 阶的最小代价,则 d p [ i ] = m a x ( d p [ i − 2 ] + c i − 2 , d p [ i − 1 ] + c i − 1 ) dp[i] = max(dp[i-2]+c_{i-2}, dp[i-1]+c_{i-1}) dp[i]=max(dp[i2]+ci2,dp[i1]+ci1)

代码实现
int main() {int n = 0;scanf("%d", &a[++n]);while (scanf(",%d", &a[++n]));for (int i = 2; i <= n; i++) {dp[i] = min(dp[i - 2] + a[i - 2], dp[i - 1] + a[i - 1]);}printf("%d", dp[n]);return 0;
}

时间复杂度: O ( n ) O(n) O(n)

空间复杂度: O ( n ) O(n) O(n)

END

文章文档:公众号 字节幺零二四 回复关键字可获取本文文档。

题目来源:快手2019年秋季校园招聘笔试试卷—工程A试卷

文章声明:题目来源 牛客 平台,如有侵权,请联系删除!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/34573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试工程师如何学习系统架构

面对同一个“知识点”不同的工作角色需要考虑的问题不一样&#xff0c;比如在系统架构中会使用到消息队列功能&#xff0c;系统架构师&#xff0c;开发人员&#xff0c;测试人员&#xff0c;运维人员&#xff0c;需求人员等需要考虑的问题不一样。 系统架构师在考虑消息队列功能…

数电大作业-四输入表决器

&#xff08;PCB和multisim仿真画的有很大问题&#xff0c;没有VCC输入和GND&#xff0c;没学过直接裸画的&#xff0c;之后会好好看视频学习&#xff09; 应用背景&#xff1a; 四个评委&#xff0c;三个及以上评委同时按下通过按钮时&#xff0c;选手才能通过。否则不通过。…

自动驾驶ADAS

1 ToF摄像头分类 1.1 ToF原理 类似雷达测距&#xff0c;生成3D点云&#xff0c;或者叫3D贴图。ToF相机的分辨率一般在3万像素左右。ToF距离计算公式如图所示。 Figure 1-1 ToF距离计算公式 D&#xff1a;距离 c&#xff1a;光速 PHI&#xff1a;相位差 fmod&#xff1a;调制频率…

创新指南|品牌电商新策略:五大转型思路与RGM举措

在流量红利过去的背景下&#xff0c;品牌电商面对多渠道运营的难题&#xff0c;如缺乏统盘经营、绩效管理分散、价格战失控、用户体验不足以及流量过度依赖&#xff0c;品牌电商如何有效应对这些挑战&#xff0c;本文从5个维度探讨全渠道电商RGM破局之路&#xff0c;实现品牌的…

pyppeteer模块经常使用的功能,相关操作案例

官方仓库地址&#xff1a;https://github.com/miyakogi/pyppeteer 官方文档地址&#xff1a;API Reference — Pyppeteer 0.0.25 documentation Selenium环境的相关配置比较繁琐&#xff0c;此外&#xff0c;有的网站会对selenium和webdriver进行识别和反爬&#xff0c;因此在…

区块链小故事

大灰狼与小白兔 一天兔子妈妈出门了&#xff0c;在大门上安装了一个区块链的门把手&#xff0c;这个门把手只有兔子妈妈、小兔子、以及另一个客人都同意的时候&#xff0c;才会开门&#xff0c;有一天客人a的钥匙丢了&#xff0c;被大灰狼捡到了&#xff0c;大灰狼于是去开门&…

【MySQL】数据库——事务

一.事务概念 事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么都执行&#xff0c;要么都不执行事务是一个不可分割的工作逻辑单元&#xff0c;在数…

【因果推断python】54_效应异质性和非线性带来的挑战2

目录 Continues Treatment and Non Linearity Key Concepts Continues Treatment and Non Linearity 我们只是深入探讨了二元结果增加异质性治疗效果分析难度的一个例子。但这种现象并不局限于市场营销中的转换问题。例如&#xff0c;2021 年&#xff0c;全球成功向公众提供了…

com.google.flatbuffers序列化原理和java使用场景

简介 FlatBuffers 的主要目标是为序列化和反序列化提供一个高效且灵活的解决方案,同时支持多种语言和平台。 实现原理 FlatBuffers 的实现原理可以概括为以下几个关键点: 序列化与存储: FlatBuffers 使用一种二进制序列化格式,将数据直接存储为平面化的二进制数据缓冲区…

如何使用Python接收电子邮件

哈喽,大家好,我是木头左! 本文将详细介绍如何使用Python接收电子邮件,包括SMTP协议的基本概念、Python邮件库的使用以及实际的代码示例。通过阅读本文,你将能够掌握邮件自动处理的技巧,提高工作效率,同时也可以提升自己的Python编程能力。 SMTP协议简介 SMTP(Simple …

深度学习 --- stanford cs231学习笔记五(训练神经网络的几个重要组成部分之三,权重矩阵的初始化)

权重矩阵的初始化 3&#xff0c;权重矩阵的初始化 深度学习所学习的重点就是要根据损失函数训练权重矩阵中的系数。即便如此&#xff0c;权重函数也不能为空&#xff0c;总是需要初始化为某个值。 3&#xff0c;1 全都初始化为同一个常数可以吗&#xff1f; 首先要简单回顾一下…

Ubuntu美化+安装软件

Ubuntu美化安装软件 安装软件 g sudo apt install g curl sudo apt install curl git sudo apt install git Vim sudo apt install vim VSCode https://code.visualstudio.com/Download 找到下载文件夹&#xff0c;有一个code***.deb文件 sudo dpkg -i code***.deb 一些小小的…

仿微信图片查看器`WPF`实现`ListBox` 鼠标滑动批量选中与反选效果

看到微信中&#xff0c;上传图片时的图片查看功能可以通过手指长按并滑动实现多选&#xff0c;于是为解析实现思路&#xff0c;也通过WPF 使用ListBox 实现了一版案例。 参考效果 微信效果如下&#xff0c;支持图片单选和鼠标长按滑动实现批量操作。 WPF模仿效果&#xff1a…

Mysql: SQL-DDL

一.SQL通用语法 1.SQL可以单行或者多行书写,以分号结尾。 2.SQL语句可以使用空格/缩进来增强语句的可读性。 3.MySQL数据库的SQL语句不区分大小写,关键字建议用大写。 4.注释: 单行注释:注释内容或#注释内容(Mysql特有) 多行注释&#xff1a;/*注释内容*/ 二.SQL分类 1.D…

信息学奥赛初赛天天练-34-CSP-J2021完善程序-按位异或、模拟算法、数组模拟环、约瑟夫问题应用

PDF文档公众号回复关键字:20240624 2021 CSP-J 完善程序3 1 完善程序 (单选题 &#xff0c;每小题3分&#xff0c;共30分) &#xff08;Josephus问题&#xff09;有n个人围成一个圈&#xff0c;依次标号0至n-1。从0号开始&#xff0c;依次 0&#xff0c;1&#xff0c;0&#…

0801功率放大问题

3个学时讲一个电路&#xff08;两个共集共集并联&#xff09;&#xff0c;4个问题&#xff0c;发展线索 丙类放大电路用在高频通讯行业&#xff0c;低频功放是甲类&#xff0c;乙类&#xff0c;甲乙类 PT三极管的损耗 Pv电源提供的功率 现代模电通常使用方法b 只有交流…

React进阶(五):导航守卫_renderroutes

在《React进阶&#xff08;四&#xff09;&#xff1a;路由介绍》博文中&#xff0c;介绍了React路由相关知识&#xff0c;在实际项目开发过程中&#xff0c;路由之间的跳转必定涉及权限、用户是否登陆等限定条件的判定&#xff0c;故需要导航守卫来完成这一事项。 在实现reac…

大数据面试题之YARN

目录 1、介绍下YARN 2、YARN有几个模块 3、YARN工作机制 4、YARN有什么优势&#xff0c;能解决什么问题? 5、YARN容错机制 6、YARN高可用 7、YARN调度器 8、YARN中Container是如何启动的? 9、YARN的改进之处&#xff0c;Hadoop3.x相对于Hadoop 2.x? 10、YARN监控 1…

用Vue3打造一个交互式营养追踪仪表盘

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 Vue.js 构建营养仪表盘卡片 应用场景介绍 营养仪表盘卡片是一个可视化工具&#xff0c;用于跟踪个人的营养摄入情况。它通常包含以下信息&#xff1a; 卡路里摄入目标和进度营养成分&#xff08;如脂肪…

2024中国·淮安高端人才精英赛北京分站赛首战告捷

“诚意满淮&#xff0c;创赢未来”&#xff01;6月20-21日&#xff0c;2024中国淮安高端人才精英赛首场分站赛在北京产业创新中心顺利举办。淮安市科技局党组书记、局长胡长青&#xff0c;淮安市委组织部人才处处长沈雪娇&#xff0c;淮安经开区党工委委员、管委会副主任、科技…