P0409

[NOI2005] 月下柠檬树

[NOI2005] 月下柠檬树

[NOI2005] 月下柠檬树

李哲非常喜欢柠檬树。在静静的夜晚,当天空中有一弯明月温柔地照亮地面上的景物时,他总会悠闲地坐在自己亲手植下的那棵柠檬树旁,思索着人生的哲理。

某天,当他看到月光下柠檬树投在地面上的影子如此清晰时,一个问题浮现出来:树影的面积是多大呢?

直接测量面积很困难,于是李哲决定用几何的方法计算。他对这棵树的形状了解得非常清楚,并想好了简化的模型:

  • 整棵柠檬树自下向上分成 nn 层,依次编号为 1,2,…,n1, 2, \ldots, n;
  • 第 11 层到第 n−1n-1 层每层都是圆台,其上下底面都是水平的圆;相邻两个圆台中,上层的下底面与下层的上底面重合;
  • 第 nn 层(最上面一层)是圆锥,它的底面就是第 n−1n-1 层圆台的上底面;
  • 所有底面的圆心(包括树顶)都在同一条与地面垂直的直线上。

已知第 ii 层的高度为 hih_i,第 ii 层下底面的圆半径为 rir_i,第 11 层圆台的下底面距地面的高度为 h0h_0。李哲还测出了月光与地面的夹角为 α\alpha。

为便于计算,假设月光是平行光,地面是水平的,并忽略树干产生的影子。请你求出树影的面积。

输入格式

第一行包含一个整数 nn 和一个实数 α\alpha,分别表示柠檬树的层数和月光与地面的夹角(单位为弧度)。

第二行包含 n+1n+1 个实数 h0,h1,h2,…,hnh_0, h_1, h_2, \ldots, h_n,分别表示树离地的高度和每层的高度。

第三行包含 nn 个实数 r1,r2,…,rnr_1, r_2, \ldots, r_n,表示每层下底面的圆半径。

同一行中相邻的两个数之间用一个空格分隔。输入的实数小数点后可能包含 11 至 1010 位数字。

输出格式

输出一行一个实数,表示树影的面积,四舍五入保留两位小数。

样例输入

2 0.7853981633
10.0 10.00 10.00
4.00 5.00

样例输出

171.97

样例解释

树共两层:第 11 层是下底半径 44、上底半径 55、高 1010 的圆台,第 22 层是底面半径 55、高 1010 的圆锥,整棵树离地 1010。月光与地面夹角为 π4\dfrac{\pi}{4},此时树影面积约为 171.97171.97。

数据范围

对于所有测试数据:

  • 1≤n≤5001\le n\le 500;
  • 0.3<α<π20.3 < \alpha < \dfrac{\pi}{2};
  • 0<hi≤1000 < h_i\le 100;
  • 0<ri≤1000 < r_i\le 100。

来源与许可

本题为 CCF NOI 2005 试题「月下柠檬树」,题面与测试数据整理自 BZOJ 1502。

样例 1

输入

2 0.7853981633
10.0 10.00 10.00
4.00 5.00

输出

171.97