#612. 奶牛自行车 Cowcycles

奶牛自行车 Cowcycles

题目描述

[读者请注意,原题中的一些词语已经被改成了有关奶牛的双关语。] 秀·谢夫(小奶牛)在花花公子杂志上中了大奖,于是她从农村搬到了城郊的一座别墅中。

可是她还常常怀念乡村的生活,总想回到原来的农村逛逛。为了环保,秀决定骑上为她量身定做的奶牛自行车(特殊的自行车,专门为牛蹄设计)。 秀大约有一吨重。同样的,秀在普通的奶牛自行车上,要想骑得平平稳稳,也不是一件容易的事。因此,调节奶牛自行车的变速器让秀心力交瘁。

帮助秀选择她的奶牛自行车前面 F1<=F<=5\red{F (1 <= F <= 5)}个齿轮和后面 R1<=R<=10\red{R (1 <= R <= 10)}个齿轮,使她的 F×R\red{F\times R} 奶牛自行车符合下面的标准:

  • 1\red 1.前面齿轮的型号(齿的数量)必须在给定的范围内。
  • 2\red 2.后面齿轮的型号(齿的数量)必须在给定的范围内。
  • 3\red 3.在每一种齿轮组合中,传动比率就是前面齿轮的齿数除以后面齿轮的齿数所得的商。
  • 4\red 4.最大的传动比率至少是最小的三倍。
  • 5\red 5.齿轮组合的转动比率(已排好序)相邻两项的差的的方差(见下面的例子) 应该达到最小。

按照下面的公式计算平均数与方差(xi\red{x_i} 代表数据) :

                1    n
          平均数 = ---  SUM x_i
                   n   i=1  

                 1    n   
          方差 = ---  SUM (x_i - 平均数)^2
                 n   i=1  

计算并确定最佳齿轮组合(其中 F\red F 个前齿轮,R\red R 个后齿轮),使方差最小(传动比率至少是 3x\red{3x})。

输入格式

第一行是 F\red FR\red R,表示前齿轮和后齿轮的数量。第二行包括 4\red 4 个数字:F1\red{F1}F225<=F1<F2<=80\red{F2(25 <= F1 < F2 <= 80)}R1\red{R1}R25<=R1<R2<=40\red{R2(5 <= R1 < R2 <= 40)}。从 F1\red{F1}F2\red{F2} 型号的前齿轮都是可用的;从 R1\red{R1}R2\red{R2} 型号的后齿轮都是可用的。至少会有一组合法的解。

输出格式

在第一行从小到大输出前齿轮的型号,用空格分开。在第二行从小到大输出后齿轮的型号,同样用空格分开。当然,齿轮的齿数一定是整数。

如果有多个解,输出前齿轮齿数最小的那一个(第一个齿轮齿数最小的,若第一个齿轮齿数相等,输出第二个齿轮齿数最小的……依此类推)。如果所有的前齿轮齿数都相等,照着上面的办法处理后齿轮(其实就是把第一个,第二个……齿轮分别设为第一,第二……个关键字来排序)。

样例

输入样例

2 5
39 62 12 28

输出样例

39 53
12 13 15 23 27

提示

这个问题最大的挑战就是“读懂题目”.慢慢读,不要想一步登天.如果你读不懂题目,还是得一遍一遍的把它读进去.

问题要我们找出“最佳齿轮组合”,即传动比率最接近平均数的组合.考虑下面的测试数据:

2\red 2 5\red 5

39\red{39} 62\red{62} 12\red{12} 28\red{28}

这意味着有 2\red 2 个前齿轮,型号范围在 3962\red{39\sim 62}5\red 5 个后齿轮,型号范围在 1228\red{12\sim 28}.程序必须检查所有前齿轮组成的有序对(共 6239+1=24\red{62-39+1=24} 种齿轮),和所有后齿轮组成的五元组(共 2812+1=17\red{28-12+1=17} 种齿轮).

根据组合数学原理,总共有 24!/22!/2!x17!/5!/12!=656\red{24!/22!/2! x 17!/5!/12! = 656},880\red{880} 种可能(我是这么认为的).

对于每一种可能,做下面的计算.举个例子来说,对于枚举到的第一种情况:前齿轮是 39\red{39}40\red{40},后齿轮是 12\red{12},13\red{13},14\red{14},15\red{15}16\red{16}.

首先,计算所有可能的传动比率:

39/12=3.25000000000000000000\red{39/12 = 3.25000000000000000000}

39/13=3.00000000000000000000\red{39/13 = 3.00000000000000000000}

39/14=2.78571428571428571428\red{39/14 = 2.78571428571428571428}

39/15=2.60000000000000000000\red{39/15 = 2.60000000000000000000}

39/16=2.43750000000000000000\red{39/16 = 2.43750000000000000000}

40/12=3.33333333333333333333\red{40/12 = 3.33333333333333333333}

40/13=3.07692307692307692307\red{40/13 = 3.07692307692307692307}

40/14=2.85714285714285714285\red{40/14 = 2.85714285714285714285}

40/15=2.66666666666666666666\red{40/15 = 2.66666666666666666666}

40/16=2.50000000000000000000\red{40/16 = 2.50000000000000000000}

然后,对它们进行排序:

39/16=2.43750000000000000000\red{39/16 = 2.43750000000000000000}

40/16=2.50000000000000000000\red{40/16 = 2.50000000000000000000}

39/15=2.60000000000000000000\red{39/15 = 2.60000000000000000000}

40/15=2.66666666666666666666\red{40/15 = 2.66666666666666666666}

39/14=2.78571428571428571428\red{39/14 = 2.78571428571428571428}

40/14=2.85714285714285714285\red{40/14 = 2.85714285714285714285}

39/13=3.00000000000000000000\red{39/13 = 3.00000000000000000000}

40/13=3.07692307692307692307\red{40/13 = 3.07692307692307692307}

39/12=3.25000000000000000000\red{39/12 = 3.25000000000000000000}

40/12=3.33333333333333333333\red{40/12 = 3.33333333333333333333}

然后,计算差的绝对值:

2.437500000000000000002.50000000000000000000=0.06250000000000000000\red{2.43750000000000000000 - 2.50000000000000000000 = 0.06250000000000000000}

2.500000000000000000002.60000000000000000000=0.10000000000000000000\red{2.50000000000000000000 - 2.60000000000000000000 = 0.10000000000000000000}

2.600000000000000000002.66666666666666666666=0.06666666666666666666\red{2.60000000000000000000 - 2.66666666666666666666 = 0.06666666666666666666}

2.666666666666666666662.78571428571428571428=0.11904761904761904762\red{2.66666666666666666666 - 2.78571428571428571428 = 0.11904761904761904762}

2.785714285714285714282.85714285714285714285=0.07142857142857142857\red{2.78571428571428571428 - 2.85714285714285714285 = 0.07142857142857142857}

2.857142857142857142853.00000000000000000000=0.14285714285714285715\red{2.85714285714285714285 - 3.00000000000000000000 = 0.14285714285714285715}

3.000000000000000000003.07692307692307692307=0.07692307692307692307\red{3.00000000000000000000 - 3.07692307692307692307 = 0.07692307692307692307}

3.076923076923076923073.25000000000000000000=0.17307692307692307693\red{3.07692307692307692307 - 3.25000000000000000000 = 0.17307692307692307693}

3.250000000000000000003.33333333333333333333=0.08333333333333333333\red{3.25000000000000000000 - 3.33333333333333333333 = 0.08333333333333333333}

然 后 计 算 平 均 数 和 方 差 . 平 均 数 是 ( 我 是 这 么 认 为 的 ) 0.0995370370370370370366666\red{0.0995370370370370370366666}.. 方 差 大 约 是 0.00129798488416722\red{0.00129798488416722}.

找出使方差最小的齿轮组合.