2020牛客暑期多校训练营(第八场)K.Kabaleo Lite(贪心,高精)

题目链接

思路:

对盈利做个前缀和然后从大往下取,每次取的时候增加的人数是当前的前缀和的最小值减去已经得到的人数。注意数据很大需要用到高精(所以我们用python,手动滑稽)。

代码:

t=int(input())
for i in range(t):
    n=int(input())
    a=list(map(int,input().split()))
    b=list(map(int,input().split()))
    mn=b[0]
    ans=a[0]*b[0]
    sum=mx=a[0]
    for j in range(1,n):
        mn=min(mn,b[j])
        sum+=a[j]
        if sum>mx:
            ans+=(sum-mx)*mn
            mx=sum
    print('Case #{}: {} {}'.format(i+1,b[0],ans))

猜你喜欢

转载自blog.csdn.net/ACkingdom/article/details/107826197