Description

Input

文件的第1行包含一个整数n和一个实数alpha,表示柠檬树的层数和月亮的光线与地面夹角(单位为弧度)。第2行包含n+1个实数h0,h1,h2,…,hn,表示树离地的高度和每层的高度。第3行包含n个实数r1,r2,…,rn,表示柠檬树每层下底面的圆的半径。上述输入文件中的数据,同一行相邻的两个数之间用一个空格分隔。输入的所有实数的小数点后可能包含1至10位有效数字。
Output

输出1个实数,表示树影的面积。四舍五入保留两位小数。
Sample Input
2 0.7853981633
10.0 10.00 10.00
4.00 5.00
Sample Output
171.97
HINT

1≤n≤500,0.3

存个simpson模板

 uses math;
const
maxn=;
eps=1e-7;
var
x,rr,fx1,fy1,fx2,fy2,k:array[..maxn]of double;
n:longint;
a,l,r,m,fl,fr,fm:double; function simpson(l,r,fl,fr,fm:double):double;
begin
exit((r-l)/*(fl+fr+*fm));
end; function f(a:double):double;
var
i:longint;
begin
f:=;
for i:= to n do
begin
if abs(a-x[i])<rr[i] then f:=max(f,sqrt(sqr(rr[i])-sqr(a-x[i])));
if (a>fx1[i]) and (a<fx2[i]) then f:=max(f,fy1[i]+(a-fx1[i])*k[i]);
end;
end; function area(l,m,r,fl,fm,fr,pre:double):double;
var
ll,rr,fll,frr,ls,rs:double;
begin
ll:=(l+m)/;rr:=(m+r)/;fll:=f(ll);frr:=f(rr);
ls:=simpson(l,m,fl,fm,fll);rs:=simpson(m,r,fm,fr,frr);
if abs(ls+rs-pre)<eps then exit(pre);
exit(area(l,ll,m,fl,fll,fm,ls)+area(m,rr,r,fm,frr,fr,rs));
end; procedure main;
var
i:longint;
begin
read(n,a);a:=/tan(a);
for i:= to n+ do read(x[i]);
for i:= to n+ do x[i]:=x[i]+x[i-];
for i:= to n+ do x[i]:=x[i]*a;
for i:= to n do read(rr[i]);
r:=x[n+];l:=x[n+];
for i:= to n do
begin
if x[i]-rr[i]<l then l:=x[i]-rr[i];
if x[i]+rr[i]>r then r:=x[i]+rr[i];
end;
for i:= to n do
if (x[i]-rr[i]<x[i+]-rr[i+]) and (x[i]+rr[i]<x[i+]+rr[i+]) then
begin
fx1[i]:=x[i]+rr[i]*(rr[i]-rr[i+])/(x[i+]-x[i]);fy1[i]:=sqrt(sqr(rr[i])-sqr(fx1[i]-x[i]));
fx2[i]:=x[i+]+rr[i+]*(rr[i]-rr[i+])/(x[i+]-x[i]);fy2[i]:=sqrt(sqr(rr[i+])-sqr(fx2[i]-x[i+]));
if abs(fx2[i]-fx1[i])>eps then k[i]:=(fy2[i]-fy1[i])/(fx2[i]-fx1[i]);
end;
m:=(l+r)/;fl:=f(l);fr:=f(r);fm:=f(m);
writeln(*area(l,m,r,fl,fm,fr,simpson(l,r,fl,fr,fm))::);
end; begin
main;
end.

1502: [NOI2005]月下柠檬树 - BZOJ的更多相关文章

  1. BZOJ 1502: [NOI2005]月下柠檬树 [辛普森积分 解析几何 圆]

    1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1070  Solved: 596[Submit][Status] ...

  2. [BZOJ 1502] [NOI2005] 月下柠檬树 【Simpson积分】

    题目链接: BZOJ - 1502 题目分析 这是我做的第一道 Simpson 积分的题目.Simpson 积分是一种用 (fl + 4*fmid + fr) / 6 * (r - l) 来拟合 fl ...

  3. 1502: [NOI2005]月下柠檬树

    一堆圆台平行光的投影 在草稿纸上画一下,发现对于一个圆,它投影完还是一个半径不变的圆. 定义树的轴在投影平面上经过的点为原点,定一个正方向,建立平面直角坐标系, 能发现,对于一个半径为\(r\),高度 ...

  4. [NOI2005]月下柠檬树[计算几何(simpson)]

    1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1169  Solved: 626[Submit][Status] ...

  5. [NOI2005]月下柠檬树

    题意 F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ ModifyUser  autoint Logout 捐赠本站 Probl ...

  6. 【BZOJ1502】[NOI2005]月下柠檬树 Simpson积分

    [BZOJ1502][NOI2005]月下柠檬树 Description 李哲非常非常喜欢柠檬树,特别是在静静的夜晚,当天空中有一弯明月温柔地照亮地面上的景物时,他必会悠闲地坐在他亲手植下的那棵柠檬树 ...

  7. 【bzoj 1502】月下柠檬树

    月下柠檬树 题意 求n个圆与他们的公切线的定积分. 解法 求出圆的公切线就可以了. 特别坑的一点 : 最两端的圆,有可能会被其他的圆所包含,所以要重新求一下最左端与最右端. 比较坑的一点 : 精度要设 ...

  8. 5.21 省选模拟赛 luogu P4207 [NOI2005]月下柠檬树 解析几何 自适应辛普森积分法

    LINK:月下柠檬树 之前感觉这道题很鬼畜 实际上 也就想到辛普森积分后就很好做了. 辛普森积分法的式子不再赘述 网上多的是.值得一提的是 这道题利用辛普森积分法的话就是一个解析几何的问题 而并非计算 ...

  9. BZOJ1502:[NOI2005]月下柠檬树——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=1502 https://www.luogu.org/problemnew/show/P4207 李哲 ...

随机推荐

  1. android菜鸟学习笔记2----关于adb

    adb : android debug bridge android调试桥 路径:adt-bundle目录/sdk/platform-tools/adb.exe 常见的adb命令: adb devic ...

  2. 十九、android中判断sim卡状态和读取联系人资料的方法

    在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. Pho ...

  3. 百度网页搜索部来自Console的招聘信息

    百度网页搜索部来自Console的招聘信息,小伙伴们,你发现了吗?

  4. linux安装配置sendmail实现邮件发送

    sendmail配置 yum -y update sendmail sendmail-cf SendMail相关目录1. 设定档目录:/etc/mail2. 记录档:/var/log/maillog3 ...

  5. Mvc项目右键没有控制器选项

    今天遇到了一个比较少见的问题,我用vs2010打开一个从Svn上拉下来的mvc2项目,在Controller文件夹上右键却发现没有新建控制器的选项,在View文件夹上右键也没有新建视图的选项. 我的第 ...

  6. 找不到命名空间命名空间:System.Windows.Forms

    System.Windows.Forms在system.windows.forms.dll中.需要添加引用.在解决方案资源管理器中的引用上单击右键,选择添加引用.找到System.windows.fo ...

  7. 【学习笔记】虚拟机安装Mac系统

    参考了这篇装的虚拟机 http://jingyan.baidu.com/article/ff411625b9011212e48237b4.html 系统的话可以到远景去找找 安装用工具: http:/ ...

  8. eclipse如何修改dynamic web module version;——eclipse操作备忘

    1.eclipse如何修改dynamic web module version 一.修改工程属性: 右键eclipse的工程,选择属性,再选择Project Facets里面中选择Dynamic We ...

  9. 【转载】#303 - Accessibility of Class Members

    Members of a class can have different kinds of accessibility. An accessibility keyword indicates wha ...

  10. 阿里巴巴2013年实习生笔试题A

    一.单项选择题 1.下列说法不正确的是:(B) A.SATA硬盘的速度速度大约为500Mbps/s B.读取18XDVD光盘数据的速度为1Gbps C.前兆以太网的数据读取速度为1Gpbs D.读取D ...