zoukankan      html  css  js  c++  java
  • 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()



  • 相关阅读:
    集合
    第五天
    第四天
    第二天
    ieee 期刊缩写(转载)
    JAVA学习笔记03
    JAVA学习笔记2
    JAVA学习笔记01
    Latex 图片排版
    非奇异终端滑模
  • 原文地址:https://www.cnblogs.com/Frandy/p/google_code_jam_minimum_scalar_product_python.html
Copyright © 2011-2022 走看看