昨晚学妹参加了B站秋招笔试,还想考考我?

简介: 昨晚学妹参加了B站秋招笔试,还想考考我?

学妹昨晚参加了B站的2022届秋招算法笔试,做完给我发来了一道题,想考考我,说挺难的。

我看了两分钟,给她发去了我的思路。然后学妹一眼就看懂了,立马秒过。

那么这道题到底是怎么做的呢?

题目要求将个数切分成块,求每块的序号乘上该块内数字之和的最大值。

那么首先我们可以用来表示前缀和,也就是。

然后假设个子序列中,第个子序列的末尾元素为,其中。那么第个子序列的元素和就可以用前缀和来表示为。

然后题目要求的最大值就可以表示为:

展开并化简就可以得到:

后面一项就是整个数组之和的倍,是一个定值。所以要求这个式子的最大值,就是求的最小值。

又因为,所以就是求的最小值。

可以发现,这个前缀和其实是互不干扰的,所以只需要对所有的前缀和进行排序,取最小的个就行了。

C++代码如下:

#include <stdio.h>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = 300010;
ll a[N];
int main() {
    int n, k;
    scanf("%d%d", &n, &k);
    for (int i = 0; i < n; ++i) {
        scanf("%lld", &a[i]);
        if (i) a[i] += a[i-1];
    }
    sort(a, a+n-1);
    ll res = 0;
    for (int i = 0; i < k-1; ++i)
        res += a[i];
    res = -res + k * a[n-1];
    printf("%lld\n", res);
    return 0;
}

Python代码:

n, k = [int(x) for x in input().strip().split(" ")]
a = [int(x) for x in input().strip().split(" ")]
S = [sum(a[:i+1]) for i in range(n-1)]
S.sort()
res = -sum(S[:k-1]) + k * sum(a)
print(res)
相关文章
|
7月前
|
算法 Java 关系型数据库
2年5个月13天,从外包到拿下阿里offer,没想到屌丝也能有今天
不说太多废话,但起码要让你先对我有一个基本的了解。本人毕业于浙江某二本院校,算是科班出身,毕业后就进了一家外包公司做开发,当然不是阿里的外包,具体什么公司就不透露了,在外包一呆就呆了整整2年多,直到现在才从外包离开,如今拿到阿里的offer准备入职了。
|
7月前
|
机器学习/深度学习
2021牛客暑期多校训练营1(补题)
2021牛客暑期多校训练营1(补题)
41 0
|
算法 Java 关系型数据库
圆梦腾讯之后,我收集整理了这份“2023春招常见面试真题汇总”
大家看我前几天的文章就能够知道,我在今年春招中成功拿到了腾讯Java工程师的Offer!在我拿到Offer之后,我就在想,能不能够把我和几个哥们这两个月面试过程中经常被问到的面试进行一个收集整理,能够帮助大家在面试的时候更加得心应手,也能少走一些弯路!
|
大数据 测试技术 程序员
【面试邀请】温大大和他的朋友们,日常都是怎么「摸鱼+加薪」的?
大家好,我是温大大 就像马丁·路德·金说过一句话:I have a dream 温大大也有个梦想就是: 1、将毕生所学的「测试技能」倾囊相授传给各位同学,让同学们升职加薪。 2、组建一个测试圈,在这里我们可以:讨论「测试」技术问题、揭秘「测试」薪酬、分享「面试」套路。
【面试邀请】温大大和他的朋友们,日常都是怎么「摸鱼+加薪」的?
|
前端开发 JavaScript 安全
给在校准备找工作的同学的几个建议
Vim 被誉为"编辑器之神",这可不是虚的。
119 0
|
消息中间件 网络协议 Linux
【C++面试】小厂S测试题
可以。 分析:如果析构函数没有设置为虚函数,当存在继承关系时,可能会存在内存泄漏的风险,如父类指针指向子类对象时,当我们在程序的最后delete掉父类指针
227 0
【C++面试】小厂S测试题
|
域名解析 弹性计算 前端开发
|
Arthas NoSQL 算法
二本院校学弟大二开始实习,大三收割阿里、腾讯实习offer
二本院校学弟大二开始实习,大三收割阿里、腾讯实习offer
二本院校学弟大二开始实习,大三收割阿里、腾讯实习offer
|
消息中间件 NoSQL 算法
双非硕士的辛酸求职回忆录:第 1 篇 一份让面试官满意的简历究竟要做到什么
双非硕士的辛酸求职回忆录:第 1 篇 一份让面试官满意的简历究竟要做到什么
194 0
双非硕士的辛酸求职回忆录:第 1 篇 一份让面试官满意的简历究竟要做到什么
|
网络协议 搜索推荐 JavaScript
双非硕士的辛酸求职之旅--第 5 篇:好开心我进入了面试环节中,那么我该如何自我介绍?
双非硕士的辛酸求职之旅--第 5 篇:好开心我进入了面试环节中,那么我该如何自我介绍?
171 0
双非硕士的辛酸求职之旅--第 5 篇:好开心我进入了面试环节中,那么我该如何自我介绍?
下一篇
DataWorks