google code jam exercise——Minimum Scalar Product

继续Python练习。这次的题很简单的。

这次的题是Minimum Scalar Product,大概意思是给你两个数组va和vb,两个数组的元素对应相乘,然后求和,要求和最小,在数组元素顺序可以调整的时候。

这里主要用到一个不等式,x和y两个升序的数组,那么sum(x[i]*y[i])>=sum(x[i]*y[n-i]),这个不等式在元素中有负数时也是成立的,所以问题的解法就很直接了。

Python里面可以直接调用sort和reverse函数,先将两个数组va和vb排序,然后将其中一个reverse一下,在把元素对应相乘,就得到最小值了。

代码如下:

复制代码
#!/usr/bin/python
#
encoding:UTF-8
#
Filename:MinimumScalarProduct.py

import sys

inname = "input.txt"
outname = "output.txt"
if len(sys.argv)>1:
inname = sys.argv[1]
outname = inname.rstrip(".in")
outname = outname + ".out"

testCaseNum = 0
fin = open(inname,"r")
line = fin.readline()
testCaseNum = int(line)

fout = open(outname,"w")
caseNum = 0

for caseNum in range(testCaseNum):
line = fin.readline()
vectorLen = int(line)
line = fin.readline()
va = [int(val) for val in line.split()]
line = fin.readline()
vb = [int(val) for val in line.split()]
va.sort()
vb.sort()
vb.reverse()
sp = 0
for j in range(vectorLen):
sp = sp + va[j] * vb[j]
answer = "Case #%d: %d\n" %(caseNum+1,sp)
fout.write(answer)

fin.close()
fout.close()
复制代码



posted @   Frandy.CH  阅读(544)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示