zoukankan      html  css  js  c++  java
  • GCJ——Minimum Scalar Product(2008 Round1 AA)

    题意:

      给定两组各n个数,可任意调整同一组数之中数字的顺序,求 sum xi*yi i=1..n的最小值。

    Small: n<=8

        abs xy,yi<=1000

    Large: n<=800

        abs xi,yi <= 100000

    假如两个数字之和为固定,那么两数字之积最大当且仅当两两数字尽量接近。

    所以,直觉告诉我们——将x升序排列,y降序排列,所得对应积最大。

    因为顺序可以任意调整,所以我们完全可以固定x的数字顺序,仅仅思考y的数字顺序。

    验证:

    当n=2时:

      当仅有两个数的时候 x1,x2,y1,y2 ,假定标号大的数字也大。

      x1*y2+x2*y1 - (x1*y1 + x2*y2)

      x1(y2 - y1) + x2 (y1-y2)

      (x1-x2)(y2-y1) < 0

      显然,n=2的情况下是符合的。

      

    当n>2时:

      假设最优解中,存在 ya,yb,有b>a且ya>yb(不是按照降序排列的),显然根据n=2,交换他们的位置,就会得到更小的答案。

    所以,假设正确。

      另外,还有很重要的一点,就是在Larger数据下,xi*yi是可能会溢出int的(10^10),数据要选择好。

  • 相关阅读:
    Shooting Algorithm
    Subgradient Algorithm
    Factorization Machine
    支持向量机
    Hashing Trick
    Science上发表的超赞聚类算法
    Contractive Auto-Encoder
    Shell之数学计算
    牛顿方法(Newton-Raphson Method)
    泊松回归(Poisson Regression)
  • 原文地址:https://www.cnblogs.com/dandi/p/4037242.html
Copyright © 2011-2022 走看看