阿里4.15笔试

感觉都挺简单,就是想不到,太菜了。
第一题AC,第二题暴力超时10%AC

第一题:
if __name__ == "__main__":
    n = int(sys.stdin.readline().strip())
    line = sys.stdin.readline().strip()
    values = list(map(int, line.split()))
    values.sort()
    res = []
    tag = 1  for i in range(len(values)): if tag == 1:
            res.append(values.pop(-1))
            tag = 0  elif tag == 0:
            res.append(values.pop(0))
            tag = 1  sum = 0  for i in range(len(res)): if i == 0:
            sum += abs(res[i] - res[1])
            sum += abs(res[i] - res[-1]) elif i == len(res) - 1:
            sum += abs(res[i]-res[0])
            sum += abs(res[i]-res[i-1]) else:
            sum += abs(res[i]-res[i-1])
            sum += abs(res[i] - res[i+1]) print(sum//2) for i in res: print(str(i)+' ', end='')
第二题:
if __name__ == "__main__":
    n = int(sys.stdin.readline().strip())
    values = [] for i in range(n):
        line = sys.stdin.readline().strip()
        value = list(map(int, line.split()))
        values.append(value)
    min_vals = [] for x1, y1 in values: for x2, y2 in values: if x1 == x2 and y1 == y2: continue  X = (x1 + x2)/2.0  Y = (y1 + y2)/2.0  min_val = min(X, Y)
            min_vals.append(min_val) print('%.1f'%max(min_vals))

#阿里巴巴招聘##阿里巴巴##笔试题目#
全部评论
大佬能简单说一下第一题的思路吗
1 回复 分享
发布于 2020-04-16 08:48
求大佬解决第二题
点赞 回复 分享
发布于 2020-04-15 20:00
第一题n个人,每个人有一个特征值a,给n个人安排座位,最大化邻座两个人之间的特征值差异程度之和。输入:第一行一个正整数n,带表总人数第二行包含n个正整数,第i个正整数ai表示第i个人的特征值注意:邻座的定义是第i人(1输出第一行:最大差异值第二行:输出用空格隔开的n个数,满足差异值最大化,重新排列过的特征值。(如果有多组,输出一组即可)
点赞 回复 分享
发布于 2020-04-15 20:58
我做的题目第一道是按键输出,第二道四子棋判断输赢,第三道树的问题
点赞 回复 分享
发布于 2022-04-15 23:45

相关推荐

2024-11-21 04:35
电子科技大学 Java
努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
评论
1
2
分享
牛客网
牛客企业服务