联想2025校招 技术研究方向试卷

news2025/1/10 21:20:52

目录

  • 1. 第一题
  • 2. 第二题

⏰ 时间:2024/08/16
🔄 输入输出:ACM格式
⏳ 时长:1.5h

本试卷还有选择题部分,但这部分比较简单就不再展示。

1. 第一题

题目描述

小明正在神奇苹果园里工作。这个苹果园里一共有 n n n 棵神奇苹果树,编号从 1 1 1 n n n,其中编号为 i i i 的苹果树初始有着 a i a_i ai 个苹果,且保证 a i > 0 a_i>0 ai>0。每天小明需要选择其中一棵还有苹果的苹果树上采摘,小明会将其上所有苹果都采摘下来,使得该树上苹果数量归零。采摘完成后,其他所有苹果树会受到惊吓,从而立刻使得它们树上的苹果数量翻倍。小明想要以最优方式采摘,使得最后能收集到的苹果数量最多。请你帮小明找到这样的方案。初始时在第 1 1 1 天,第 i i i 棵树上有 a i a_i ai 个苹果,小明应当选择一颗采摘,而后其余苹果树的苹果数量翻倍,再到第 2 2 2 天循环往复直到第 n n n 天小明采摘完最后一颗非空苹果树。

输入描述

第一行一个整数 n n n,表示苹果树数量。
第二行 n n n 个整数 a 1 , a 2 , ⋯ a n a_1,a_2,\cdots a_n a1,a2,an a i a_i ai 表示编号为的苹果树初始苹果数量。对于100%的数据, 1 ≤ n ≤ 50000 1\leq n\leq 50000 1n50000 1 ≤ a i ≤ 1000000 1\leq a_i\leq 1000000 1ai1000000

输出描述

输出一个整数表示答案。因为结果可能较大,请输出结果模100000007的余数。

题解

本题的「采摘完成」指代有些不明确。到底是把一棵树全部采摘完才算采摘完成,还是摘完一个苹果就算采摘完成?(实际上是前者)

显然用贪心算法。要使得最后的苹果数量尽可能地多,应当在一开始采摘苹果数量最小的苹果树,然后采摘次小的,以此类推。我们可以先读入数组然后将其从小到大排个序,设排序后的数组为 { a i } \{a_i\} {ai},那么本题在不求余数的前提下答案为

A n s = ∑ i = 0 n − 1 a i ⋅ 2 i Ans=\sum_{i=0}^{n-1}a_i\cdot 2^i Ans=i=0n1ai2i

由于本题涉及到大数,故用python求解起来会比较方便。但注意到 n n n 的范围可以达到 50000 50000 50000,对于python来讲直接计算 2 50000 2^{50000} 250000 不现实(最多计算到 2 14284 2^{14284} 214284,因为整数长度超过4300无法输出)。只需注意到以下性质

( a i ⋅ 2 i )   m o d   x = ( a i ⋅ 2 i   m o d   x )   m o d   x (a_i\cdot 2^i)\,mod\,x=(a_i\cdot 2^i\,mod\,x)\,mod\,x (ai2i)modx=(ai2imodx)modx

n = int(input())
apples = list(map(int, input().split()))

apples.sort()

res = 0
MOD = 100000007

power_of_two = [1] * n
for i in range(1, n):
    power_of_two[i] = (power_of_two[i - 1] * 2) % MOD

for i in range(n):
    res = (res + apples[i] * power_of_two[i]) % MOD

print(res)

2. 第二题

题目描述

小明正在帮一个工厂规划生产计划。小明已经知道未来 n n n 天工厂会有的情况,初始时机器热量为 0 0 0,如果第 i i i 天启动生产,那么热量会增加 a i a_i ai,产生 b i b_i bi 的收益。若第 i i i 天没有生产,则热量会减少 c i c_i ci。小明知道他应该保证在任何情况下热量都不大于阈值 T T T,否则机器会损坏。小明想知道在最佳规划下,工厂最大能获得多少收益。注意热量最低为 0 0 0,再降温将无效。

输入描述

第一行两个整数 n n n T T T,表示工厂规划天数和热量阈值。
第二行 3 n 3n 3n 个整数 a 1 , b 1 , c 1 , ⋯   , a n , b n , c n a_1,b_1,c_1,\cdots,a_n,b_n,c_n a1,b1,c1,,an,bn,cn,含义如题面。
对于100%的数据, 1 ≤ n ≤ 3000 ,    1 ≤ T ≤ 100 ,    0 ≤ a i , c i ≤ T ,    0 ≤ b ≤ 100000 1\leq n\leq3000,\;1\leq T\leq100,\;0\leq a_i,c_i\leq T,\;0\leq b\leq100000 1n3000,1T100,0ai,ciT,0b100000

输出描述

输出一个整数表示答案。

题解

用动态规划求解。

d p [ i ] [ j ] dp[i][j] dp[i][j] 为第 i i i结束时热量为 j j j 时能获得的最大收益。于是可知本题答案为 max ⁡ j d p [ n ] [ j ] \max_j dp[n][j] maxjdp[n][j] d p [ 0 ] [ 0 ] = 0 dp[0][0]=0 dp[0][0]=0(因为第 0 天,热量为 0 且收益为 0)。

显然遍历方向是 i i i 从小到大, j j j 也从小到大。

i i i 天,我们既可以选择生产也可以选择不生产,于是有两个转移方程:

d p [ i ] [ j + a [ i ] ] = m a x ( d p [ i ] [ j + a [ i ] ] , d p [ i − 1 ] [ j ] + b [ i ] ) d p [ i ] [ m a x ( j − c [ i ] , 0 ) ] = m a x ( d p [ i ] [ m a x ( j − c [ i ] , 0 ) ] , d p [ i − 1 ] [ j ] ) dp[i][j + a[i]] = max(dp[i][j + a[i]], dp[i - 1][j] + b[i]) \\ dp[i][max(j - c[i], 0)] = max(dp[i][max(j - c[i], 0)], dp[i - 1][j]) dp[i][j+a[i]]=max(dp[i][j+a[i]],dp[i1][j]+b[i])dp[i][max(jc[i],0)]=max(dp[i][max(jc[i],0)],dp[i1][j])

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n, T;
    cin >> n >> T;
    vector<int> a(n + 1), b(n + 1), c(n + 1);
    for (int i = 1; i <= n; i++) {
        cin >> a[i] >> b[i] >> c[i];
    }

    vector<vector<int>> dp(n + 1, vector<int>(T + 1, -1));
    dp[0][0] = 0;

    for (int i = 1; i <= n; i++) {
        for (int j = 0; j <= T; j++) {
            if (dp[i - 1][j] == -1) continue;
            if (j + a[i] <= T) {
                dp[i][j + a[i]] = max(dp[i][j + a[i]], dp[i - 1][j] + b[i]);
            }
            int new_j = max(j - c[i], 0);
            dp[i][new_j] = max(dp[i][new_j], dp[i - 1][j]);
        }
    }

    int ans = *max_element(dp[n].begin(), dp[n].end());
    cout << ans << endl;
    
    return 0;
}

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

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

相关文章

C#堆排序算法

前言 堆排序是一种高效的排序算法&#xff0c;基于二叉堆数据结构实现。它具有稳定性、时间复杂度为O(nlogn)和空间复杂度为O(1)的特点。 堆排序实现原理 构建最大堆&#xff1a;将待排序数组构建成一个最大堆&#xff0c;即满足父节点大于等于子节点的特性。将堆顶元素与最后…

海康VisionMaster使用学习笔记4-快速匹配模块

快速匹配模块 快速匹配包括基本参数,特征模板,运行参数,结果显示 基本参数 可以修改图像源和模块的ROI区域. 特征模版 可以配置管理所有的模版,点击创建可以新增模版,也可以通过载入加载本地的模型 建立新模版 点击创建,可以选择当前图像或本地图像进行建模 模版存图按…

【ASFF】《Learning Spatial Fusion for Single-Shot Object Detection》

arXiv-2019 https://github.com/GOATmessi7/ASFF 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method4.1 Strong Baseline4.2 Adaptively Spatial Feature Fusion4.2.1 Feature Resizing4.2.2 Adaptive Fusion 4.3 Consistency Propert…

DVWA | CSRF(LowMedium)攻击的渗透实践

目录 概述 Low Medium 概述 CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09; 是一种网络攻击方式。 通过伪造当前用户的行为&#xff0c;让目标服务器误以为请求由当前用户发起&#xff0c;并利用当前用户权限实现业务请求伪造。 例如&a…

如何将excel以文本形式储存的数字一键转换为数字

有时候一些软件给出的数据格式很恶心&#xff0c;为了方便计算常常以数字粘贴到新表&#xff0c;但随之而来新问题&#xff0c;以文本储存的公式无法用公式计算&#xff0c;怎么办啊 方法一&#xff1a;使用“转换为数字”功能 (对数字少时用&#xff09; 当Excel检测到某个单…

得到任务式 大模型应用开发学习方案

根据您提供的文档内容以及您制定的大模型应用开发学习方案&#xff0c;我们可以进一步细化任务式学习的计划方案。以下是具体的任务式学习方案&#xff1a; 任务设计 初级任务 大模型概述&#xff1a;阅读相关资料&#xff0c;总结大模型的概念、发展历程和应用领域。深度学…

STM32定时器输入捕获功能

用于测频率测占空比 IC(Input Capture)输入捕获 输入捕获模式下&#xff0c;当通道输入引脚出现指定电平跳变&#xff08;上升沿/下降沿&#xff09;时&#xff0c;会让当前CNT的值将被锁存到CCR中&#xff0c;可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数…

数字化转型底座-盘古信息IMS OS,可支撑构建MES/WMS/QCS/IoT等工业软件

在当今这个数字化浪潮汹涌的时代&#xff0c;众多企业纷纷踏上数字化转型之路。对于部分想自研工业软件的企业来说&#xff0c;一个强大、灵活且可扩展的数字化底座显得尤为重要。盘古信息IMS OS&#xff0c;&#xff0c;正是这样一款能够支撑构建MES&#xff08;制造执行系统&…

SystemUI下拉框新增音量控制条

Android产品下拉框一直只有亮度条没有音量控制条。 为了方便控制音量&#xff0c;普遍都是底部导航栏添加音量加减按钮&#xff0c;在Android10以后&#xff0c;大家普遍用上了手势导航&#xff0c;去掉底部导航栏。 目前需要再下拉框中可以直接控制音量。 文章目录 前言需求及…

Git使用方法(三)---简洁版上传git代码

1 默认已经装了sshWindows下安装SSH详细介绍-CSDN博客 2 配置链接github的SSH秘钥 1 我的.ssh路径 2 进入路径cd .ssh 文件 3 生成密钥对 ssh-keygen -t rsa -b 4096 (-t 秘钥类型 -b 生成大小) 输入完会出现 Enter file in which to save the key (/c/Users/Administrator/…

webrtc学习笔记3

Nodejs实战 对于我们WebRTC项目而言&#xff0c;nodejs主要是实现信令服务器的功能&#xff0c;客户端和服务器端的交互我们选择websocket作为通信协议&#xff0c;所以以websocket的使用为主。 web客户端 websocket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行…

IIS发布打包后文件

1.打开IIS软件 2 添加网站&#xff0c; 自定义网站名称-选择要放置的资源路径-选择IP地址 3.打开放置的资源目录放置打包后文件 4.选择浏览 搜索不到IIS可进行一下操作 控制面板-程序和功能-启用或关闭windows功能-勾选IIS

Axios请求使用params参数导致后端获取数据嵌套

问题重述&#xff1a; 首先看前端的axios请求这里我使用params参数将data数据传给后端 let data JSON.stringify(this.posts);axios.post("/blog_war_exploded/insertPost", {params: {data: data}}).then((res) > {if (res.data "success") {alert(…

在Windows11强制开启copilot

在 Windows 11 上启用自带的基于 GPT-4 的 Copilot 功能。以下是具体步骤&#xff1a; 更新系统&#xff1a; 确保你的 Windows 11 系统已经更新到最新版本&#xff08;23H2 或更高版本&#xff09;。你可以在“设置” > “Windows 更新”中检查并安装最新更新。 更改区域和…

盒子模型

1. 盒子模型&#xff08;Box Model&#xff09;组成 2.边框&#xff08;border&#xff09; 表格的细线边框 边框会影响盒子实际大小 3.内边距&#xff08;padding&#xff09; 内边距会影响盒子实际大小 应用场景---导航栏&#xff08;不设宽高度&#xff09; 4.外边距&#x…

并发系统的 CSP+PAT 形式化建模与验证方法(以Kafka系统为例)

消息队列中间件是分布式系统的重要组成部分。它允许应用程序仅关注数据本身&#xff0c;而无需关心数据传输的具体细节。这一特性有效解决了消息异步传输、应用程序解耦以及流量削峰等问题。Kafka是一个开源的分布式消息系统&#xff0c;它基于发布-订阅模型构建。Kafka具有低延…

软考高级:数据库- 候选键、主键、外键

在数据库设计中&#xff0c;候选键、主键和外键是三个非常重要的概念。为了更好地理解它们&#xff0c;我们可以用通俗的例子来帮助说明。 通俗示例 假设我们在一个学校里管理学生的信息。每个学生都有一个独一无二的学号、名字、身份证号和手机号。这些信息都可以用来唯一标…

Cat1智能电表:技术优势与应用注意事项

Cat.1(Category1)智能电表&#xff0c;作为新一代智能计量解决方案&#xff0c;其核心优势在于低功耗广域网络(LPWAN)技术的应用&#xff0c;特别是4GLTECat.1蜂窝网络标准的集成。这不仅提升了数据传输的稳定性和安全性&#xff0c;还优化了远程管理能力&#xff0c;为电力行业…

WPF打印控件内容

当我们想打印控件内容时&#xff0c;如一个Grid中的内容&#xff0c;可以用WPF中PrintDialog类的PrintVisual()方法来实现 界面如下&#xff1a; XAML代码如下 <Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width"300"…

haproxy实验-2

haproxy中的算法 静态算法&#xff1a;按照事先定义好的规则轮询公平调度&#xff0c;不关心后端服务器的当前负载、连接数和响应速度 等&#xff0c;且无法实时修改权重(只能为0和1,不支持其它值)&#xff0c;只能靠重启HAProxy生效。 static-rr&#xff1a;基于权重的轮询…