题目链接
思路:
对盈利做个前缀和然后从大往下取,每次取的时候增加的人数是当前的前缀和的最小值减去已经得到的人数。注意数据很大需要用到高精(所以我们用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))