Bilibili暑期实习笔试

两道题。一道思维,一道二分。(第一个是力扣那种写函数的题)

  1. 给一个数组,将其划分成个子数组(不需要连续)。问每个子数组极差的和最大是多少。

Code:

int solution(vector<int> nums, int k) {
    int n = nums.size();
    sort(nums.begin(), nums.end());
    int res = 0;
    for (int i = 1; i <= min(k, n - k); ++i) res += nums[n - i] - nums[i - 1];
    return res;
}
  1. 一共有个苹果,个小孩,这些小孩排成一排,小明是第个小孩(下标从1开始)。给每个人分配苹果,每个小孩至少分一个苹果,相邻的小孩分配的苹果数量差不能超过1。问小明最多能分到多少个苹果。

Code:

#include <bits/stdc++.h>

using namespace std;

#define LL long long

bool ok(LL x, LL k, LL n, LL m) {
    LL mx = (x + 1 + x + n - k) * (n - k) / 2 + x + (x + 1 + x + k - 1) * (k - 1) / 2;
    if (mx < m) return false;
    LL mi = x;
    if (x - (n - k) >= 1) mi += (x - 1 + x - (n - k)) * (n - k) / 2;
    else mi += (x - 1 + 1) * (x - 1) / 2 + n - k - (x - 1);
    if (x - (k - 1) >= 1) mi += (x - 1 + x - (k - 1)) * (k - 1) / 2;
    else mi += (x - 1 + 1) * (x - 1) / 2 + k - 1 - (x - 1);
    return mi <= m;
}

int solution(int n, int m, int k) {
    if (n == 1) return m;
    LL l = 1, r = m, f = -1;
    while (l <= r) {
        LL mid = (l + r) >> 1;
        if (ok(mid, k, n, m)) {
            f = mid;
            l = mid + 1;
        }
        else r = mid - 1;
    }
    return f;
}
int main() {
    int n, m, k;
    cin >> n >> m >> k;
    cout << solution(n, m, k) << endl;
    return 0;
}
#bilibili笔试#
全部评论
大佬 有收到面试通知吗
点赞 回复 分享
发布于 03-27 12:38 湖北

相关推荐

字节一面:1.面试官自我介绍+小组业务介绍:C/C++,GPU,异构计算,从上层的编译到下层异步执行2.机器学习有了解过吗...&nbsp;&nbsp;学校选修课...3.自我介绍4.实习项目介绍5.项目里为什么用dpdk?&nbsp;为什么要搞用户态协议栈,不搞原来内核的那一套?内核那一套可能有一些固定的额外的开销...&nbsp;kernel&nbsp;bypass&nbsp;&nbsp;绕过很多开销&nbsp;零拷贝...6.有没有深入研究过dpdk?&nbsp;深度分析?不太了解,vpp用的多,注册函数指针,成员到主结构体,初始化...7.介绍一下项目2&nbsp;??8.讲一下外碎片场景?9.项目里怎么合并内存的?10.照你这么说,一直遍历,O(N),效率是不是有点低?&nbsp;&nbsp;怎么优化?合并机制类似于伙伴系统,有效减少外部碎片,确保大块内存请求的连续性。联系到工程上....&nbsp;&nbsp;&nbsp;11.对于解耦的意义?&nbsp;&nbsp;12.加什么锁?&nbsp;&nbsp;&nbsp;自旋锁会不会?13.工作线程&nbsp;vs&nbsp;主线程?&nbsp;&nbsp;&nbsp;锁竞争?&nbsp;&nbsp;桶锁粒度?&nbsp;&nbsp;&nbsp;12.mmap&nbsp;&nbsp;vs&nbsp;brk&nbsp;?13.进程地址空间?&nbsp;独立性?&nbsp;页表?&nbsp;写时拷贝?&nbsp;&nbsp;(面试官:嗯嗯,对,这个这个这个不错,这个能回答到这个点还是比较少???)14.mm_sturct讲一下?&nbsp;&nbsp;进程独立拷贝?&nbsp;&nbsp;区间划分?&nbsp;&nbsp;管理?&nbsp;&nbsp;空间布局,自上而下?15.&nbsp;mmap会映射到哪个区域?&nbsp;&nbsp;文件?物理内存?堆区?16.你对Linux系统的内存管理这块了解的咋样?17.内存分配算法?&nbsp;&nbsp;伙伴系统?&nbsp;&nbsp;内存交换?18.unordered_map&nbsp;vs&nbsp;map?&nbsp;&nbsp;底层?&nbsp;&nbsp;优缺点?19.vector底层?&nbsp;&nbsp;异地扩容?&nbsp;&nbsp;底层指针调整?&nbsp;&nbsp;元素深拷贝?20.智能指针?&nbsp;&nbsp;unique&nbsp;vs&nbsp;shared(具体的场景有什么,如何具体选择)&nbsp;?&nbsp;底层?&nbsp;&nbsp;作用域?21.&nbsp;RAII?&nbsp;&nbsp;&nbsp;除了智能指针还有哪里用到RAII&nbsp;??22.左值右值引用?&nbsp;&nbsp;&nbsp;传递unique_ptr?&nbsp;&nbsp;&nbsp;std::move??&nbsp;&nbsp;底层?&nbsp;static_cast?23.cpp编译链接流程??24.类模板?&nbsp;&nbsp;生成模板类?&nbsp;&nbsp;&nbsp;在编译的哪个阶段??&lt;br&gt;25.讲一下生成的.o文件的格式?&nbsp;&nbsp;ELF?&nbsp;&nbsp;忘了...26.和.so&nbsp;.a的联系?&nbsp;&nbsp;联系实习动静态库?&lt;br&gt;27.动态库的加载?&nbsp;&nbsp;磁盘到内存?&nbsp;&nbsp;如何链接过去的?&nbsp;&nbsp;入口?28.符号表那一套...&nbsp;&nbsp;大哥你别问了....&lt;br&gt;29.聊一聊&nbsp;&nbsp;&nbsp;&amp;amp;lt;&amp;amp;lt;程序员的自我修养...&amp;amp;gt;&amp;amp;gt;30.Python会吗?&nbsp;&nbsp;脚本?31.手撕&nbsp;链表题&nbsp;&nbsp;10min&nbsp;调试过你咋不用智能指针??&nbsp;&nbsp;&nbsp;写算法题习惯了....32.反问:1.面试表现咋样,哪里可以提升?&nbsp;平时咋学习?智能指针和新特性,底层编译链接,再复习复习.深度比较重要,找一个方向深入一下吧...2.字节的项目管理流程,从开始到结束,流程?车轱辘话....这个流程的话,它这个这个其实没有这种统一的标准,因为它像自觉它是一个比较大的一个公司嘛,对吧?然后各种各样的这种业务,各种各样的这种项目,他可能。每个项目它都是不太一样的对吧?他可能有的可能希望你。给自己做一些很创新的事情,让你自己一个人去深入的研究某1块儿,然后去独立的去。完成整个一个项目。但是有的项目它可能就是希望你去在他规划的这个大项目里边去让你做某1块事情,然后更加讲究这种分工协作。&lt;br&gt;&lt;br&gt;
点赞 评论 收藏
分享
评论
3
8
分享

创作者周榜

更多
牛客网
牛客企业服务