京东2025届秋招 算法开发工程师 第2批笔试
目录
- 1. 第一题
- 2. 第二题
- 3. 第三题
⏰ 时间:2024/08/17
🔄 输入输出:ACM格式
⏳ 时长:2h
本试卷还有选择题部分,但这部分比较简单就不再展示。
1. 第一题
村子里有一些桩子,从左到右高度依次为 1 , 1 + 2 , 1 + 2 + 3 , . . . 1,1+2,1+2+3,... 1,1+2,1+2+3,...,每两颗桩子之间的间隔为 1 1 1。现在下了一场大雪,但是不知道雪下了多厚,现在给你两个数字,这是雪后某相邻两个桩子在雪面上的高度,请你通过这两个数字计算雪的厚度。
输入描述
在一行中输入两个正整数 a , b a, b a,b, 1 ≤ a < b ≤ 5 ⋅ 1 0 5 1\leq a<b\leq5\cdot10^5 1≤a<b≤5⋅105。
输出描述
在一行中输出一个整数代表雪的厚度。我们可以证明,答案一定存在。
题解
只需注意到 a k − a k − 1 = k a_k-a_{k-1}=k ak−ak−1=k,于是可以用 b − a b-a b−a 定位到右边柱子的下标,计算它的高度即可。
#include <bits/stdc++.h>using namespace std;
using i64 = long long;int main() {i64 a ,b;cin >> a >> b;i64 k = b - a;i64 old_h = k * (k + 1) / 2;cout << old_h - b << endl;return 0;
}
2. 第二题
牛牛有一种锯齿状的积木,这种积木比较长,但是每个单位长度的高度是相等的,高度为 1 1 1 或者 2 2 2。
现在牛牛拿出了两块长度分别为 n n n 和 m m m 的积木,她现在想把这两块积木拼接在一起,即使中间有空隙也没有关系。但是拼接后的积木的高度要不超过 3 3 3,请你帮助牛牛计算在满足这个前提下拼接后的积木的长度最短可以是多少。
例如有两块形状如下的积木:
输入描述
第一行给出两个正整数 n , m n,m n,m,代表第一块和第二块积木的长度。
第二行给出 n n n 个数字代表第一块积木每个单位的高度。
第三行给出 m m m 个数字代表第二块积木每个单位的高度 1 ≤ n , m ≤ 1000 1\leq n,m \leq 1000 1≤n,m≤1000。
输出描述
在一行中输出一个正整数代表拼接后积木的最短长度
题解
本题直接模拟即可。
说白了就是给定 a a a 和 b b b 两个数组,初始时先让 a a a 和 b b b 的左端对齐。
- 先让 a a a 在 b b b 上向右滑动,计算两者重叠部分的按位元素和,只要重叠部分中有一个位置出现了 > 3 >3 >3 的情况,说明当前拼接是无效的,继续右移。我们自然是希望 a a a 右移的距离尽可能地小。
- 再让 b b b 在 a a a 上向右滑动,同样是找到正确的拼接位置,并使得 b b b 右移的距离尽可能小。
- 还要考虑一种特殊情况就是无法上下拼接,此时需要将 a a a 和 b b b 直接横向连接,长度为 m + n m+n m+n。
#include <bits/stdc++.h>using namespace std;int min_len(const string& a, const string& b) {int n = a.length(), m = b.length();// a在b上滑动for (int i = 0; i < m; i++) {bool valid = true;for (int j = i; j < i + n && j < m; j++) {if (a[j - i] - '0' + b[j] - '0' > 3) {valid = false;break;}}if (valid)return max(m, i + n);}return m + n;
}int main() {int n, m;cin >> n >> m;string a, b;cin >> a >> b;cout << min(min_len(a, b), min_len(b, a)) << endl;return 0;
}
3. 第三题
牛牛也是要回家过年的呢。
牛牛所在的国家有 n n n 座城市, m m m 条有向道路,第 i i i 条道路由城市 u i u_i ui 通往城市 v i v_i vi,通行费为 w i w_i wi。
作为一头豪气的牛,希望他回家的花费是一个特殊的数字(例如666元)。具体的说,牛牛希望从城市 1 1 1 移动到城市 n n n,并恰好花费 a a a 元。
请你告诉牛牛,他有多少种回家的方案?
输入描述
第一行三个整数 n , m , a ( 1 ≤ n ≤ 100 , 1 ≤ m ≤ 1000 , 1 ≤ a ≤ 1000 ) n,m,a\,(1\leq n\leq 100,1\leq m\leq 1000,1\leq a\leq1000) n,m,a(1≤n≤100,1≤m≤1000,1≤a≤1000),含义如题面所示。
接下来 m m m 行,第 i i i 行三个整数 u i , v i , w i ( 1 ≤ u i , v i ≤ n , 1 ≤ w i ≤ a ) u_i,v_i,w_i\,(1\leq u_i,v_i\leq n,1\leq w_i\leq a) ui,vi,wi(1≤ui,vi≤n,1≤wi≤a),描述了一条道路。
输出描述
如果牛牛回家的方案数大于等于 20220201 20220201 20220201 种,请你在第一行输出 All roads lead to Home!,然后在第二行输出回家的方案数对 20220201 20220201 20220201 取模的结果。
否则只需要输出一行一个整数,表示牛牛回家的方案数。
题解
本题使用动态规划求解。
设 d p [ i ] [ j ] dp[i][j] dp[i][j] 为从城市 1 1 1 到城市 i i i,花费恰好为 j j j 的方案数。由于从 1 1 1 到 1 1 1 花费为 0 0 0,也算是一种方案,因此 d p [ 1 ] [ 0 ] = 1 dp[1][0]=1 dp[1][0]=1,其他地方为 0 0 0。
假设 u → w v u\overset{w}{\to} v u→wv,且在城市 u u u 的时候已经花费了 j j j,那么有如下的转移方程
d p [ v ] [ j + w ] = d p [ u ] [ j ] + d p [ v ] [ j + w ] dp[v][j + w]=dp[u][j]+dp[v][j +w] dp[v][j+w]=dp[u][j]+dp[v][j+w]
注意,在计算 v v v 的时候,我们必须要保证 u u u 已经计算完毕,因此要按照拓扑序进行计算。
#include <bits/stdc++.h>using namespace std;const int MOD = 20220201;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n, m, a;cin >> n >> m >> a;vector<vector<pair<int, int>>> graph(n + 1);vector<int> in(n + 1, 0);for (int i = 0; i < m; i++) {int u, v, w;cin >> u >> v >> w;graph[u].emplace_back(v, w);in[v]++;}vector<vector<int>> dp(n + 1, vector<int>(a + 1, 0));vector<bool> st(n + 1, 0);dp[1][0] = 1;queue<int> q;for (int i = 1; i <= n; i++) {if (!in[i]) q.push(i);}while (!q.empty()) {auto u = q.front();q.pop();for (auto &[v, w]: graph[u]) {if (!--in[v]) q.push(v);for (int j = 0; j + w <= a; j++) {if (dp[v][j + w] + dp[u][j] >= MOD || st[u]) {st[v] = true;}dp[v][j + w] = (dp[v][j + w] + dp[u][j]) % MOD;}}}if (st[n]) cout << "All roads lead to Home!" << endl;cout << dp[n][a] << endl;return 0;
}
相关文章:
京东2025届秋招 算法开发工程师 第2批笔试
目录 1. 第一题2. 第二题3. 第三题 ⏰ 时间:2024/08/17 🔄 输入输出:ACM格式 ⏳ 时长:2h 本试卷还有选择题部分,但这部分比较简单就不再展示。 1. 第一题 村子里有一些桩子,从左到右高度依次为 1 , 1 2…...
模具监视器的技术参数有哪些
模具监视器的技术参数涵盖了多个方面,这些参数对于确保模具监视器的性能、稳定性和检测精度至关重要。以下是一些主要的技术参数: 一、显示器参数 屏幕尺寸:常见的模具监视器显示器尺寸为12.5英寸至13.5英寸,具体尺寸可能因不同…...
使用QGIS配置管线流向地图
一、需求概述 在管网项目中,需要进行地图配置使用QGIS显示管网的流向。 二、目标 配置一副管网地图,可以在地图上显示出每个管段的流向。 三、数据结构 管网数据: id[管线编码]source[起始节点ID]target[终点节点ID]dir[方向]1100101FT2101102FT……………………节点数据…...
白骑士的C#教学附加篇 5.1 C#开发工具
系列目录 上一篇:白骑士的C#教学实战项目篇 4.4 游戏开发 在这一部分,我们将介绍一些额外的内容和工具,以帮助您提高 C# 开发的效率和质量。掌握合适的开发工具和调试技巧,可以让您在编写和维护代码时更加高效和从容。 开发工具对…...
C++中的多线程编程和锁机制
二、多线程、锁 2.1 C语言线程库pthread(POSIX threads) 2.2.1 线程创建 pthread_create #include <pthread.h>pthread_t thread; ThreadData args {1, "Hello from parameterized thread"}; int result pthread_create(&threa…...
【投融界-注册安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
自动打电话软件给企业带来了什么?
使用机器人外呼系统肯定都是想要给自己企业带来好处和解决问题的,想让自己的企业有所改变,有更好的发展,所以才会选择使用机器人外呼系统。而它也确实没让大家失望,使用了机器人外呼系统之后确实有许多企业发生了很大改变和进步&a…...
聚鼎科技:新手做装饰画生意卖什么比较好
在艺术的广阔天地里,装饰画以其独特的魅力逐渐成为室内装饰不可或缺的元素。对于刚入行的新手而言,选择合适的装饰画产品至关重要,它关系到业务的成功与否。以下是一些关于新手做装饰画生意卖什么比较好的建议。 考虑到市场需求的多样性&…...
从零开始搭建k8s集群详细步骤
声明:本文仅作为个人记录学习k8s过程的笔记。 节点规划: 两台节点为阿里云ECS云服务器,操作系统为centos7.9,master为2v4GB,node为2v2GB,硬盘空间均为40GB。(节点基础配置不低于2V2GB) 主机名节点ip角色部…...
大模型智能体可以用来实现哪些需求?
大模型智能体可以用来实现广泛的需求,以下是一些常见的应用场景: 自然语言处理(NLP)应用 文本生成:自动撰写文章、编写代码、生成新闻摘要。 对话系统:智能客服、虚拟助手、聊天机器人。 语言翻译…...
Vue 3 组合式 API 全面讲解:defineCustomElement
Vue 3 引入的组合式 API(Composition API)为开发者提供了更加灵活和强大的代码组织能力。除了常用的 defineComponent 用于定义普通组件外,Vue 3 还提供了 defineCustomElement 函数,允许开发者定义可在 Web Components 规范下使用…...
SwiftUI 6.0(iOS 18)监听滚动视图视口中子视图可见性的极简方法
概览 在 SwiftUI 的应用开发中,我们有时需要监听滚动视图中子视图当前的显示状态:它们现在是被滚动到可见视口(Viewport)?或仍然是隐藏在“未知的黑暗”中呢? 在 SwiftUI 早期版本中为了得偿所愿,我们需要借助一些“取巧”的手段。不过,从 SwiftUI 6.0(iOS 18)开始情…...
分享五种mfc140.dll丢失如何修复?五种修复错误的详细解决办法
在Windows操作系统中,DLL(动态链接库)文件扮演着至关重要的角色,它们为应用程序提供了共享的函数和资源。其中,mfc140.dll是Microsoft Visual C 2015 Redistributable Package的一部分,对于许多使用Microso…...
MATLAB 手动实现投影密度法分割建筑物立面 (73)
专栏文章往期回顾,包含本文章 MATLAB 手动实现投影密度法分割建筑物立面 (73) 一、算法介绍二、算法实现1.代码2.效果总结一、算法介绍 从原始点云中,自动分割提取建筑物立面点云用于立面绘图,可以减少人为操作流程。这里从0开始,手动实现一种基于投影密度法的建筑物立…...
QT的基础数据类型(上)
本文将介绍几个QT中常用的数据类型 QString 是处理字符串的主要类 使用Unicode编码,每个字符是16位的QChar 初始化 QString的初始化方法有以下几种: //字符串常量初始化QString str1 = "Hello, World! str1";//使用构造函数初始化QString str2("Hello, Wo…...
【系统分析师】-综合知识-系统架构
1、设计模式 1)观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新【消息订阅】。在该模式中,发生改变的对象称为观察目标,被通知的对象称为观察者&…...
华为AR1220配置GRE隧道
1.GRE隧道的配置 GRE隧道的配置过程,包括设置接口IP地址、配置GRE隧道接口和参数、配置静态路由以及测试隧道连通性。GRE隧道作为一种标准协议,支持多协议传输,但不提供加密,并且可能导致CPU资源消耗大和调试复杂等问题。本文采用华为AR1220路由器来示例说明。 配置…...
前端面试题-什么是JavaScript的闭包?有哪些应用场景?
定义: 一个函数能够访问其它函数内部定义的变量 形成的原理: (1)函数创建:在一个函数(外部函数)中定义另一个函数(内部函数)。 (2)内部函数访问:内部函数可以访问和修改外部函数中的局部变量。 (3)函数…...
Xilinx XAPP585相关
XAPP585中相关的状态机 第一个状态机:这里主要是在对时钟线延迟的基础上,通过BITSLIP操作,做时钟的对齐; 第二个状态机:这里对c_delay_in所做的操作,主要是对时钟线的延迟进行控制; delay_con…...
Java实现腾讯云人脸识别集成:如何为司机创建人脸模型
文章目录 一、场景介绍二、实现步骤三、代码解析四、总结 在现代的开发过程中,我们经常需要集成各种云服务来增强应用的功能。今天,我想和大家分享一个在Java中集成腾讯云人脸识别的实际案例——为司机创建人脸模型。这个功能通常用于司机管理系统中&…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
