阿里笔试330

感觉自己是个智障,不知道为什么都没有ac,第二题是题目看错了,前面写成所有可能的subset的expectation了。之前没有参加过国内的笔试,求大佬来看看
第一题
import sys 
import heapq
n, m, k = 0, 0, 0
farm = {}
if __name__ == "__main__":
    # 读取第一行的n
    n = 2
    ans = 0
    for i in range(n):
        # 读取每一行
        line = sys.stdin.readline().strip()
        # 把每一行的数字分隔后转化成int列表
        values = list(map(int, line.split()))
        if i==0:
            n,m,k = values[0],values[1],values[2]
        else:
            farm = values
    heap = []
    for i in range(len(farm)):
        heapq.heappush(heap,-1*farm[i])
    for i in range(1,m+1):
        x = heapq.heappop(heap)
        x = (x-i*k)/2
        x = x+i*k
        heapq.heappush(heap,x)
        print(heap)
    for i in range(len(heap)):
        heap[i] -= m*k
    print(-1*int(sum(heap)))

第二题

import sys
n = 0
input_val = []
if __name__ == "__main__":
    # 读取第一行的n
    n = 2
    ans = 0
    for i in range(n):
        # 读取每一行
        line = sys.stdin.readline().strip()
        # 把每一行的数字分隔后转化成int列表
        values = list(map(int, line.split()))
        if i==0:
            n =values[0]
        else:
            input_val = values

    #一个长为n的序列,求随机连续子序列的最大值的期望
    #3
    #1 2 3
    input_val = sorted(input_val)
    dp = [0]*n
    dp[0] = 1
    for i in range(1,n):
        if input_val[i]==input_val[i-1]+1:
            dp[i] = dp[i-1]+1
        else:
            dp[i] = 1
    print(dp)
    sum_val,count_val = 0,0
    for i in range(len(dp)):
        sum_val += dp[i]*input_val[i]
        count_val += dp[i]
    print (sum_val/count_val)




#阿里2020实习##阿里巴巴##笔试题目#
全部评论
第二题不是连续子串吗?你这dp统计的数量不对吧
点赞 回复 分享
发布于 2020-03-30 23:11

相关推荐

评论
1
1
分享
牛客网
牛客企业服务