问题
Lena正在准备一场重要的编码竞赛,在此之前有许多连续的预赛。最初,她的运气平衡是0。她相信“节省运气”,并想检查她的理论。每场比赛都由两个整数描述,L[i]
和T[i]
:
L[i]
是与比赛相关的运气量。如果莉娜赢得比赛,她的运气余额将减少L[i]
;如果她失去了它,她的运气余额将增加L[i]。
T[i]
表示比赛的重要性评级。如果比赛很重要,则等于 1
,如果比赛不重要,则等于 0
。如果Lena在不超过< code>k场重要比赛中失利,她在所有预赛中获胜后的最大运气是多少?该值可能为负值。
请在此处找到完整描述
我的努力
这是我为这个问题写的代码。我添加了所有不重要的问题,并将所有重要问题的运气值存储在一个数组中。对数组进行排序。然后从她被允许获胜的问题中提取所有最小运气余额,减去这个余额,并从她输掉的比赛的其余部分中添加运气。
法典
#!/bin/python3
import math
import os
import random
import re
import sys
# Complete the luckBalance function below.
nk = input().split()
n = int(nk[0])
k = int(nk[1])
contests = []
maximumLuckBalance = 0
for i in range(n):
luckcontestRating = input().split()
luck = int(luckcontestRating[0])
contestRating = int(luckcontestRating[1])
#print("Contest[",i+1, "]:" + "luck: ", luck, "Contest Imp: ", contestRating)
if contestRating == 0:
maximumLuckBalance += luck
else:
contests.append(luck)
contests.sort()
#print(contests)
winAllowed = len(contests) - k
#print(winAllowed)
winningLucksum = sum(contests[:winAllowed])
#print(winningLucksum)
loosingLucksum = sum(contests[winAllowed:])
maximumLuckBalance = maximumLuckBalance - winningLucksum + loosingLucksum
print(maximumLuckBalance)
问题
然而,这段代码在一个测试用例中失败了(请看下面的输入)。我的解决方案有什么问题?
输入
97 58
105 0
103 0
106 1
106 1
103 0
103 1
105 1
106 1
105 0
104 0
103 0
102 0
104 0
105 0
104 0
102 1
104 0
106 1
104 1
101 1
105 0
103 0
104 0
106 0
102 1
103 0
102 0
103 1
106 0
104 1
101 1
101 1
106 0
103 1
103 0
104 1
101 0
105 1
105 0
104 1
105 0
106 0
104 0
105 0
101 1
106 1
105 0
103 0
104 1
101 1
106 1
104 0
106 1
105 0
103 1
101 0
103 0
101 0
105 1
104 1
104 1
105 1
105 1
103 0
101 0
104 1
106 1
105 1
105 0
106 1
104 1
105 1
103 1
102 1
106 0
101 0
105 1
104 1
103 1
106 1
101 0
106 1
103 0
106 1
102 1
103 0
101 1
102 1
101 1
104 0
106 0
102 0
104 0
105 0
105 0
102 1
103 1
预期产量
10069
你的代码的问题在于你假设k
总是小于或等于评级竞赛的数量 - len(contests)。
例如,让我们考虑以下输入:
4 3
1 0
2 0
3 1
4 1
正确的输出必须是:
10
但是您的代码会产生:
4
因为,winningLucksum=sum(竞赛[:-1])=3
和lo看作Lucksum=和(竞赛[-1:])=4
,所以最大LuckBalance=3-3 4=4
。
因此,确保win的
永远不会通过替换得到否定
winAllowed = len(contests) - k
用一行:
winAllowed = max(len(contests) - k, 0)
然后,您的解决方案将通过所有测试。
本文向大家介绍Eclipse git推送上传错误问题解决方案,包括了Eclipse git推送上传错误问题解决方案的使用技巧和注意事项,需要的朋友参考一下 Eclipse 中的 Git Eclipse 附带了一个名为 Egit 的插件,它提供了一个非常完善的 Git 操作接口。 这个插件可以通过切换到 Git 视图来使用。( Window > Open Perspective > Other…,
本文向大家介绍如何解决数据不平衡问题?相关面试题,主要包含被问及如何解决数据不平衡问题?时的应答技巧和注意事项,需要的朋友参考一下 这主要是由于数据分布不平衡造成的。解决方法如下: 采样,对小样本进行加噪声采样,对大样本进行下采样 进行特殊的加权,如在Adaboost中或者SVM 采用对不平衡数据集不敏感的算法 改变评价标准:用AUC|ROC来进行评价 考虑数据的先验分布 https://blog
本文向大家介绍Linux下乱码问题的解决方案小结,包括了Linux下乱码问题的解决方案小结的使用技巧和注意事项,需要的朋友参考一下 linux系统中文件名内容为urf8编码, windows系统中文件名默认为gbk编码, 多数文档使用gbk编码,系统采用utf8编码 无中文输入法导致的乱码 1、ibus输入法 Ubuntu 系统安装后已经自带了ibus输入法,在英语环境下默认不启动。配置ibus自
我有一个我无法解决的组合问题。 给定一组向量和一个目标向量,为每个向量返回一个标量,以便集中缩放向量的平均值最接近目标。 编辑:权重w_i在范围[0,1]内。这是一个约束优化问题: 最小化d(平均(w_i*x_i),目标),条件是总和(w_i)-1=0 如果我不得不命名这个问题,它将是无界子集平均。 我已经研究过无界背包和类似的问题,但由于数字的相互依赖性,动态编程实现似乎是不可能的。 我还补充了
接口通用问题解决方案 通用错误码,错误信息及解决方案 400(非法的client_id) 400(非法的client_secret) 402(未传当前用户手机号) 402(手机号不合法) 403,10002(IP不在白名单中,本次请求ip:xxx.xxx.xxx.xxx) 403(无权访问该接口) 406(该用户不存在,请管理员添加后再使用) 408(未传timestamp或者timestamp格
本章内容包含常见错误码及错误信息描述,并给出解决问题的步骤。如果在开发过程中遇到报错,请先在本章中搜索解决方案,谢谢! 通用错误码,错误信息及解决方案 400(非法的client_id) client_id是否正确填写 client_id对应的申请应用是否通过审核 400(非法的client_secret) client_secret是否和client_id对应,有可能client_id是A应用的