首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客804207695号
University of Illinois at Urbana-Champaign Java
发布于江苏
关注
已关注
取消关注
@林小白zii:
2023 蚂蚁金服笔试题 蚂蚁笔试 0919
笔试时间:2023年9月19日 秋招 第一题 题目:最优化存储 (四) 支付宝服务亿级消费者,每个支付宝的用户有自己独特的信息,假设每个会员存储的成本为ai;现在有n个会员,和一块存储容器m,希望用该容器存储更多的会员信息;存储优化是个相当复杂的过程,为了简化问题,存储规则如下:每个会员的存储成本可以用长度ai的线段表示。存储容器一块,可以用一段线段m表示。存储容器有个特性,如果会员i储在容器中间位置,存储成本为ai本身,但是线段容器两端有存储压缩技术,存储在靠两端位置的会员存储成本可以压缩到一半,即 ai/2,而且每个会员只能压缩一次。现在n个会员,每个会员存储成本为ai,以及有一块存储资源,希望你做存储优化,使用尽可能小的存储容器存储下所有会员的信息。 输入描述 第一行输入一个正整数n,代表会员的数量。 第二行输入n个正整数ai,代表每个会员信息的大小 1 <= n <= 10^5 2 <= ai <= 10^9 保证ai是偶数。 输出描述 一个正整数,代表使用的存储容器大小的最小值。 样例输入 5 2 4 4 8 2 样例输出 14 提示 将第三个、第四个会员放在两端即可。使用一个大小为14的容器即可存储全部会员信息。 参考题解 贪心,将最大的放在两端,其余的放在中间。 C++:[此代码未进行大量数据的测试,仅供参考] #include <iostream>#include <algorithm>using namespace std;typedef long long LL;const int MAX_ELEMENTS = 100004;int numbers[MAX_ELEMENTS];int n;int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> numbers[i]; } sort(numbers, numbers + n); LL ans = numbers[n - 2] / 2 + numbers[n - 1] / 2; for (int i = 0; i < n - 2; i++) { ans += numbers[i]; } cout << ans << endl; return 0;} Java:[此代码未进行大量数据的测试,仅供参考] import java.util.Arrays;public class Main { public static void main(String[] args) { java.util.Scanner sc = new java.util.Scanner(System.in); int n = sc.nextInt(); int[] numbers = new int[n]; for (int i = 0; i < n; i++) { numbers[i] = sc.nextInt(); } Arrays.sort(numbers); long ans = numbers[n - 2] / 2 + numbers[n - 1] / 2; for (int i = 0; i < n - 2; i++) { ans += numbers[i]; } System.out.println(ans); }} Python:[此代码未进行大量数据的测试,仅供参考] n = int(input())numbers = list(map(int, input().split()))numbers.sort()ans = numbers[-2] // 2 + numbers[-1] // 2for i in range(n - 2): ans += numbers[i]print(ans) 第二题 题目:小红合并数组 小红有一个长度为n的数组,每次操作她可以选择一个i,将ai加到ai-1或者ai+1(如果i-1 或者i+1在下标范围内),请问最少需要多少次操作,可以使数组的所有元素相等。 输入描述 一行一个整数n,表示数组的长度。 接下来一行n个整数a1,a2,...,an表示数组的初始值。 1 <= n <= 10^3 0 <= ai <= 10^4 输出描述 输出一个整数,表示最少的操作次数。 样例输入 5 1 4 2 3 5 样例输出 2 提示 第一次操作,将a2加到a1,数组变为[5,2,3,5]。 第二次操作,将a2加到a3,数组变为[5,5,5]。 参考题解 看成是对前缀和数组进行删除操作。因此枚举元素和的因子d,观察d,2d,3d……这个序列是不是原来的子序列即可,然后找到一个最长的子序列。 C++:[此代码未进行大量数据的测试,仅供参考] #include <iostream>#include <vector>using namespace std;typedef long long LL;const int N = 1004;int numbers[N], prefixSum[N], n;int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> numbers[i]; prefixSum[i] = prefixSum[i - 1] + numbers[i]; } int totalSum = prefixSum[n]; vector<int> divisors; for (int i = n; i >= 1; i--) { if (totalSum % i == 0) { divisors.push_back(i); } } int answer = 0; for (int d : divisors) { int w = totalSum / d; int c = 1; for (int i = 1; i <= n; i++) { if (prefixSum[i] == c * w) { c++; } } if (c > d) { answer = n - d; break; } } cout << answer << endl; return 0;} Java:[此代码未进行大量数据的测试,仅供参考] import java.util.ArrayList;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] numbers = new int[n]; for (int i = 0; i < n; i++) { numbers[i] = scanner.nextInt(); } long[] prefixSum = new long[n + 1]; for (int i = 1; i <= n; i++) { prefixSum[i] = prefixSum[i - 1] + numbers[i - 1]; } long totalSum = prefixSum[n]; ArrayList<Integer> divisors = new ArrayList<>(); for (int i = n; i > 0; i--) { if (t
点赞 3
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
不愿透露姓名的神秘牛友
08-08 17:37
实习两个月送走两个开发
一个后端一个前端😅。上周leader跟mt说那个xx被裁了,我正好坐在边上,一听这不是之前跟我对接的后端吗。今天更是亲眼目睹了跟我对接的前端被裁,下午三点多带教突然跟我说xx走了,我一回头这个前端老哥的工位已经空了,关键是昨晚需求上线他还在加班,改我提给他的bug。我带教说人事估计提前一两周通知他被裁了,这个前端老哥真的很负责,两个开发都是快35岁的年龄,三十五岁危机真的存在啊,瑟瑟发抖。
上班后和你想的一样吗?
点赞
评论
收藏
分享
08-07 17:36
门头沟学院 机械工程师
投了一天简历看到这个破防了
HR会帮我投
点赞
评论
收藏
分享
07-24 19:53
上海交通大学 数据分析师
求前辈帮忙看看哪里可以删减,感觉内容太满了
感觉没啥重点
牛客37328580...:
个人感觉项目只是列出来了
点赞
评论
收藏
分享
08-02 09:25
北京大学 内容运营
秋招上岸啦
代码不跑我跑_bug...:
北大杀完9✌杀,9✌杀完鼠鼠杀
你最希望上岸的公司是?
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
08-06 12:32
Damn,开了一个月了😭
我真该死啊,我怎么才发现同花顺开了,大佬们现在投大数据运营还来得及嘛
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
25年秋招精心整理的最新互联网大厂笔面试题集合
2.4W
2
...
暑期实习转正自评,你就这么写!
7868
3
...
字节秋招-后端开发-一面
7337
4
...
26届秋招建议
5851
5
...
26秋招-拓竹嵌入式软件面经
4804
6
...
本华为OD终于翻身!(百度后端面经)
4373
7
...
字节秋招意向
4343
8
...
影石嵌入式驱动开发面经
2857
9
...
字节二面-半技术半聊天?
2857
10
...
亚信科技java实习面经
2104
创作者周榜
更多
正在热议
更多
#
我的秋招“寄”录
#
14277次浏览
181人参与
#
你最近一次加班是什么时候?
#
72730次浏览
365人参与
#
腾讯大前端岗位热招中
#
14895次浏览
164人参与
#
实习的内耗时刻
#
16486次浏览
228人参与
#
我的AI电子员工
#
10124次浏览
66人参与
#
你上一次给父母打电话是什么时候
#
7192次浏览
73人参与
#
华丞电子求职进展汇总
#
23409次浏览
239人参与
#
大城市找工作会更容易吗
#
43785次浏览
351人参与
#
规定下班时间vs实际下班时间
#
10864次浏览
88人参与
#
独居后,你的生活是更好了还是更差了?
#
5802次浏览
90人参与
#
工作上你捅过哪些篓子?
#
7984次浏览
53人参与
#
被AI治愈的瞬间
#
63935次浏览
634人参与
#
每个月的工资都是怎么分配的?
#
59350次浏览
591人参与
#
面试被问期望薪资时该如何回答
#
268065次浏览
1537人参与
#
秋招想进国企该如何准备
#
81394次浏览
442人参与
#
入职第二天,午饭怎么解决
#
26601次浏览
76人参与
#
奇葩时刻大赏
#
57164次浏览
237人参与
#
得物求职进展汇总
#
103811次浏览
830人参与
#
吉利求职进展汇总
#
76950次浏览
386人参与
#
那些我实习了才知道的事
#
221394次浏览
1740人参与
#
国央企薪资爆料
#
105803次浏览
556人参与
#
你觉得材料多少算高薪
#
22343次浏览
149人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务