import math def calE(num0, num1): p0 = num0 / (num0 + num1) p1 = 1 - p0 if p0 == 1 or p1 == 1: return 0 return -(p0 math.log2(p0) + p1 math.log2(p1)) if name == "main": N = int(input()) arr = [] for i in range(N): arr.append(list(map(int, input().split(',')))) E0 = 0 E1 = 0 key_dic = {} sum_0 = 0 sum_1 = 0 for i in arr: if key_dic.get(i[0], None) is None: if i[1] == 1: key_dic[i[0]] = [0, 1] sum_1 += 1 else: key_dic[i[0]] = [1, 0] sum_0 += 1 else: if i[1] == 1: key_dic[i[0]][1] += 1 sum_1 += 1 else: key_dic[i[0]][0] += 1 sum_0 += 1 E0 = calE(sum_0, sum_1) for k, v in key_dic.items(): E1 += calE(v[0], v[1]) print(round(E0-E1, 2)) 大神能帮我看一下为啥我这个一直是0 。。。我仔细看了下你的代码,似乎我们的思路是一样的?(为什么牛客网上排版会这样。。。)
点赞 评论

相关推荐

小肥罗:我觉得“实习生不了解也很正常”可能只是客套话,面试官的标准是希望答上来。另外,面试官没有马上结束面试,恰恰证明他想给你机会,想多考察你看你是否其他方面符合要求。面试时间长反而证明面试官还是看好你的,想多给你机会表现一下自己。
应届生简历当中,HR最关...
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务