2019字节跳动春招题目

本文分享了2019年字节跳动算法岗位春招的编程题目,包括Q3的编程比赛问题和Q4的割绳子问题。提供了详细的解题思路和Python3代码实现,讲解了如何确保最少奖品数量和如何通过二分法求解绳子裁剪的最优长度。
摘要由CSDN通过智能技术生成

2019字节跳动算法岗春招(不是2020届的秋招!),共四道编程题,没有选择题。笔试的时候只做出来了前两道,这里参考了大佬 Azhao1993 的解题思路, 把后两道的解法整理一下。

Q3 编程比赛

现在有n人参加编程比赛,比赛结束后每个人都得到一个分数。现在所有人铺成一圈(第1个和第n个相邻)领取奖品,要求:
1.如果某个人的分数比左右的人高,那么奖品数量也要比左右的人多;
2.每个人至少得到一个奖品。
输入描述:
第一行是整数n,表示测试样例数
每个测试样例的第一行是一个正整数,表示参加比赛的人数(0<n<100,000)
第二行是n个正整数,a[i] (0 <a[i]<10,000), 表示的从第1个人到第n个的分数
输出描述:对每个测试样例,输出应该准备的最少奖品

示例1
输入

2
2
1 2
4
1 2 3 3

输出

3
8

思路: 将选手从左到右排列在一个列表中,首尾相连,然后从左到右和从右到左分别使用贪心算法。
解答 (Python3):

# 读入输出
import sys
try: 
    while True:
        line = sys.stdin.readline().strip()
        if line == '':
            break 
        lines.append(line)
except: 
    pass

def main():
    N = int(lines[0]) # 测试样例数
    for i in range(N):
        m = int(lines[i*N+1]) #选手数目
        s = [
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值