当前位置:首页>python>白名单Python刷题营第5周题解

白名单Python刷题营第5周题解

  • 2026-10-11 01:41:02
白名单Python刷题营第5周题解

Python刷题营

第5周 列表

21 拿金币

参考答案

n=int(input())

s=input()

a=s.split()

ls=[int(i) for i in a]

s=0

for i in ls:

    s+=(i+1)//2

print(s)

学员优秀解法

yuanshuo

n=int(input())

c=0

s=input()

a=s.split()

ls=[int(i) for i in a]

for i in ls:

    if i%2==0:

        c+=i//2

    else:

        c+=i//2+1

print(c)

zimo

n=int(input())

s=input()

a=s.split()

ls=[int(i) for i in a]

d=0

for i in range(n):

    b=ls[i]

    c=b//2

    if b%2==1:

        d+=c+1

    else:

        d+=c

print(d)

22 过桥

参考答案

n=int(input())

s=input()

a=s.split()

ls=[int(i) for i in a]

ls.sort(reverse=True) # 从大到小排序

s=0 # 累加器,n个人过桥总时间

for i in range(0,len(ls),2): # 遍历列表索引,步长为2

    s+=ls[i]

print(s)

学员优秀解法

michael

n=int(input())a=sorted(map(int,input().split()))print(sum(a[::-2]))

patrick

n=int(input())

s=input()

a=s.split()

ls=[int(i) for i in a]

ls.sort()

ans=0

for i in range(n):

    if (n-i-1)%2==0:

        ans+=ls[i]

print(ans)

23 电梯升降

参考答案

n=int(input())

s=input()

a=s.split()

ls=[int(i) for i in a]

ls.insert(0,1) # 一开始在第1层

s=0 # 累加器,电梯升降总时间

for i in range(1,len(ls)):

    if ls[i]>ls[i-1]:

        s+=3*(ls[i]-ls[i-1]) # 上升

    else:

        s+=2*(ls[i-1]-ls[i]) # 下降

    s+=5 # 停留5秒

print(s)

学员优秀解法

patrick

n=int(input())

s=input()

a=s.split()

ls=[int(i) for i in a]

lc=1

ans=0

for i in range(n):

    if ls[i]>lc:

        ans+=3*(ls[i]-lc)+5

    if ls[i]<lc:

        ans+=2*(lc-ls[i])+5

    lc=ls[i]

print(ans)

vivian

n=int(input())

ls=list(map(int,input().split()))

floor=1

t=5*n

for i in ls:

    if i>floor:

        t+=3*(i-floor)

    else:

        t+=2*(floor-i)

    floor=i

print(t)

24 山洞寻宝

参考答案

n=int(input())

s=input()

a=s.split()

ls=[int(i) for i in a]

mi=999 # 挡住的最小金币数

for i in range(0,len(ls)-2): # 石门起始索引

    s=sum(ls[i:i+3]) # 计算挡住金币数

    mi=min(s,mi) # 更新最小金币数

print(sum(ls)-mi)

学员优秀解法

michael

n=int(input())

coins=list(map(int, input().split()))

max_gold=0

for i in range(n-2):

    gold=sum(coins)-coins[i]-coins[i+1]-coins[i+2]

    if gold>max_gold:

        max_gold=gold

print(max_gold)

patrick

n=int(input())

s=input()

a=s.split()

ls=[int(i) for i in a]

z=sum(ls)

b=[]

for i in range(n-2):

    b.append(ls[i]+ls[i+1]+ls[i+2])

b.sort()

print(z-b[0])

25 窗外的树

参考答案

n=int(input())

s=input()

a=s.split()

ls=[int(i) for i in a]

ls1=[0]*21 # 21个树坑是否种树(0否 1是)

for i in ls:

    ls1[i]=1

ma=0 # 能看到树的最大数量

for i in range(21):

    a=sum(ls1[i:i+4])

    ma=max(a,ma)

print(ma)

学员优秀解法

yuchen

n = int(input())

positions = list(map(int, input().split()))

has_tree = [0] * 21

for p in positions:

    has_tree[p] = 1

max_count = 0

for i in range(0, 18):

    count = sum(has_tree[i:i+4])

    if count > max_count:

        max_count = count

print(max_count)

vivian

n=int(input())

n1=list(map(int,input().split()))

ls=[0]*21

ma=0

for i in n1:

    ls[i]=1

for i in range(3,21):

    ma=max(ma,sum(ls[i-3:i+1]))

print(ma)

一起解锁

趣味编程挑战

最新文章

随机文章