CCF-CSP-202012-2-期末预测之最佳阈值-python100分

方法1:
暴力,把每个阈值和m个条目进行判断,计数。只能过70%的用例

方法2:
统计一个阈值预测准确的数量并不需要一个个判断的嘛,小于该阈值的分数,对应结果要是0(挂)才算正确;大于等于该阈值的分数,对应结果要是1(过)才算正确。所以可先用字典统计每个阈值挂了的(0)和过了的(1)数量,然后按分数大小排序(这一步已经去重复了)。计算阈值正确数的时候,从该阈值开始,往低分处走统计0的数量,往高分处走统计1的数量,最后加一起。

每算一个阈值的正确率,就要往高低走统计,这样复杂度也是O(n^2),和暴力没区别。不过稍微改一下,就马上变O(n)。往高低走统计数量的时候其实有很多重复了的,比如有阈值[1,3,5,7],统计7的0的数量时候,往低处算要算上1,3,5的总数,统计5的时候,又要往前统计1,3的,重复很多,我们可以从1开始统计好总数记下来,3的时候用前面1的总数累加3自己的数,到5的时候,用3的累加5的数,就不用往前走了。
我们可以先用数组存好到达每个阈值的0的总数,计算某个阈值的0的总数时只需要用前面的总数加上本身0的数量即可,是一种动态规划。1同理,不过是从高分处开始计算。这样事先把每个阈值的低处0的总数和高处1的总数算出来后,就不用在计算某阈值准确率时往高低两边走,直接从数组中找到结果计算。
我这里直接在字典里加上变量了,没有用数组。

d = {
   }
m = int(input())
for i in range(m):
    y, res = map(int, input().split())
    if y 
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值