4
计算碗桩高度
碗堆高度 这个难题的目的是计算一堆碗的高度。 碗被定义为没有厚度的径向对称装置。它的轮廓形状是一个偶数多项式。堆栈由半径的列表描述,每个半径与一个偶数多项式关联,作为输入作为系数列表给出(例如,该列表3.1 4.2代表多项式3.1 x2+ 4.2 x43.1X2+4.2X43.1x^2+4.2x^4)。 多项式可以具有任意次数。为了简单起见,将堆的高度定义为最顶部碗的中心的高度(有关示例,请参见示例3的图)。 测试用例采用以下格式radius:coeff1 coeff2 ...:每行以代表碗半径的浮点数开头,后跟冒号和空格分隔的列表,其中包含偶数幂的系数,以幂2开头(隐含零常数部分)。 。例如,该行2.3:3.1 4.2描述了一碗半径2.3和形状多项式3.1 * x^2 + 4.2 * x^4。 例子1 42:3.141 描述一个零高度的堆,因为单个碗没有高度。 例子2 1:1 2 1.2:5 1:3 描述了一堆高度2.0(请参见图)。 例子3 1:1.0 0.6:0.2 0.6:0.4 1.4:0.2 0.4:0 10 描述一堆高度为0.8的桩(请参见图中的绿色箭头)。 这是代码高尔夫,所以最短的代码获胜。 我有参考代码。 编辑: 参考实现依赖于一个库来计算多项式的根。您也可以这样做,但不必这样做。由于参考实现只是一个(非常好的)数值逼近,因此我将接受在普通浮点公差范围内能产生正确结果的任何代码。 < ε<ε<\varepsilon 这个难题的另一个变体是通过重新排序碗来最小化高度。我不确定是否有快速的解决方案(我想这很困难)。如果有人有更好的主意(或可以证明NP完整性),请告诉我!