社区讨论

Python一个小细节

P1873[COCI 2011/2012 #5] EKO / 砍树参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo2hsx11
此快照首次捕获于
2023/10/23 14:04
2 年前
此快照最后确认于
2023/10/23 14:04
2 年前
查看原帖
读入不要使用eval(),使用int()才能过。想了一个下午,我还以为是算法的问题。
PYTHON
N,M=map(int,input().split())
lt=[int(i) for i in input().split()]
lt.sort(reverse=True)
cnt,h=0,0
if N==1:
    print(lt[0]-M)
else:
    for i in range(N-1):
        cnt+=(lt[i]-lt[i+1])*(i+1);h+=(lt[i]-lt[i+1])
        if cnt>M:
            break
print(lt[0]-h+(cnt-M)//(i+1))
这样就不能过。显示超时。
PYTHON
N,M=map(int,input().split())
lt=[eval(i) for i in input().split()]
lt.sort(reverse=True)
cnt,h=0,0
if N==1:
    print(lt[0]-M)
else:
    for i in range(N-1):
        cnt+=(lt[i]-lt[i+1])*(i+1);h+=(lt[i]-lt[i+1])
        if cnt>M:
            break
print(lt[0]-h+(cnt-M)//(i+1))

回复

0 条回复,欢迎继续交流。

正在加载回复...