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模板

 1 uses math;
 2 const
 3     maxn=510;
 4     eps=1e-7;
 5 var
 6     x,rr,fx1,fy1,fx2,fy2,k:array[0..maxn]of double;
 7     n:longint;
 8     a,l,r,m,fl,fr,fm:double;
 9
10 function simpson(l,r,fl,fr,fm:double):double;
11 begin
12     exit((r-l)/6*(fl+fr+4*fm));
13 end;
14
15 function f(a:double):double;
16 var
17     i:longint;
18 begin
19     f:=0;
20     for i:=1 to n do
21         begin
22             if abs(a-x[i])<rr[i] then f:=max(f,sqrt(sqr(rr[i])-sqr(a-x[i])));
23             if (a>fx1[i]) and (a<fx2[i]) then f:=max(f,fy1[i]+(a-fx1[i])*k[i]);
24         end;
25 end;
26
27 function area(l,m,r,fl,fm,fr,pre:double):double;
28 var
29     ll,rr,fll,frr,ls,rs:double;
30 begin
31     ll:=(l+m)/2;rr:=(m+r)/2;fll:=f(ll);frr:=f(rr);
32     ls:=simpson(l,m,fl,fm,fll);rs:=simpson(m,r,fm,fr,frr);
33     if abs(ls+rs-pre)<eps then exit(pre);
34     exit(area(l,ll,m,fl,fll,fm,ls)+area(m,rr,r,fm,frr,fr,rs));
35 end;
36
37 procedure main;
38 var
39     i:longint;
40 begin
41     read(n,a);a:=1/tan(a);
42     for i:=1 to n+1 do read(x[i]);
43     for i:=2 to n+1 do x[i]:=x[i]+x[i-1];
44     for i:=1 to n+1 do x[i]:=x[i]*a;
45     for i:=1 to n do read(rr[i]);
46     r:=x[n+1];l:=x[n+1];
47     for i:=1 to n do
48         begin
49             if x[i]-rr[i]<l then l:=x[i]-rr[i];
50             if x[i]+rr[i]>r then r:=x[i]+rr[i];
51         end;
52     for i:=1 to n do
53         if (x[i]-rr[i]<x[i+1]-rr[i+1]) and (x[i]+rr[i]<x[i+1]+rr[i+1]) then
54         begin
55             fx1[i]:=x[i]+rr[i]*(rr[i]-rr[i+1])/(x[i+1]-x[i]);fy1[i]:=sqrt(sqr(rr[i])-sqr(fx1[i]-x[i]));
56             fx2[i]:=x[i+1]+rr[i+1]*(rr[i]-rr[i+1])/(x[i+1]-x[i]);fy2[i]:=sqrt(sqr(rr[i+1])-sqr(fx2[i]-x[i+1]));
57             if abs(fx2[i]-fx1[i])>eps then k[i]:=(fy2[i]-fy1[i])/(fx2[i]-fx1[i]);
58         end;
59     m:=(l+r)/2;fl:=f(l);fr:=f(r);fm:=f(m);
60     writeln(2*area(l,m,r,fl,fm,fr,simpson(l,r,fl,fr,fm)):0:2);
61 end;
62
63 begin
64     main;
65 end.

View Code

转载于:https://www.cnblogs.com/Randolph87/p/3800664.html

1502: [NOI2005]月下柠檬树 - BZOJ相关推荐

  1. BZOJ 1502: [NOI2005]月下柠檬树 simpson积分

    1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1244  Solved: 662 [Submit][Statu ...

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

    1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1077  Solved: 600 [Submit][Statu ...

  3. BZOJ 1502 NOI2005 月下柠檬树 Simpson自适应公式

    题目大意:给定一棵由圆台和圆锥构成的柠檬树,月光以α的夹角平行射向地面,求阴影部分面积 补充题目大意:看到这题我产生了心理阴影,求阴影部分面积 题目不好分析,但其实就是求一堆圆和一堆梯形的面积交 样例 ...

  4. BZOJ 1502:月下柠檬树

    BZOJ 1502:月下柠檬树 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1502 题目大意:给出一棵由圆台构成的树以及一个平行光源,问 ...

  5. [NOI2005]月下柠檬树 (自适应辛普森)

    P4207 [NOI2005]月下柠檬树 如图,我们要求的面积就是这些圆形跟梯形的组合,由于投射到地面上,显然有h′=htanθh' = \frac{h}{tan \theta}h′=tanθh​,由 ...

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

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

  7. 【bzoj 1502】月下柠檬树

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

  8. [BZOJ1502] [NOI2005]月下柠檬树

    Description 李哲非常非常喜欢柠檬树,特别是在静静的夜晚,当天空中有一弯明月温柔地照亮地面上的景物时,他必会悠闲地 坐在他亲手植下的那棵柠檬树旁,独自思索着人生的哲理.李哲是一个喜爱思考的孩 ...

  9. [NOI2005] 月下柠檬树 (自适应辛普森积分)

    题目 原题链接:点这里 总体思路–>问题转化 先将原本的柠檬树分解成为多个圆台,再单独看圆台的投影 一个圆在地面的投影,是等比例的,而一条竖线的投影长度d=htan⁡αd=\cfrac{h}{\ ...

最新文章

  1. 【CV项目实战】纯新手如何从零开始完成一个工业级的图像分类任务?
  2. SharePoint自动化系列——Solution auto-redeploy using Selenium(C#)
  3. Spring Security OAuth2源码解析(三)——单点登录。
  4. 7-zip来解压大于4G以上打包文件
  5. 处于计算机学科的基础地位,谈谈离散数学在计算机学科中的地位和作用(原稿)...
  6. Taro+react开发(21)--注意参数格式
  7. 2.Redis数据操作
  8. 深入理解计算及系统 Chapter2 学习笔记
  9. python输出文件夹路径_python如何获取文件夹下第一层文件的路径,
  10. 解决 error: Raw kernel process exited code: 3221226505
  11. linux图片分辨率设置吗,Ubuntu-修改图片分辨率,手机怎么修改图片分辨率
  12. 内存数据库FastDB和SQLite性能测评
  13. 腾讯地图位置服务器,腾讯地图推出地形图服务
  14. 二十余岁时的社会观(三)
  15. POJ 有关动态规划的题目
  16. java.io.FileNotFoundException: File does not exist: hdfs ://sxt/home/sqoop-1.4.6/lib/commons-codec-1
  17. 小福利,教大家用excel函数实现切片器的功能
  18. 【机器学习】GMM模型的直观推导(含中间步骤)
  19. 【K8s超级补丁】KLTS攻略:KLTS现有成果、如何使用、RoadMap规划,如何参与到KLTS项目贡献中来
  20. 行云管家堡垒机如何登录服务器

热门文章

  1. + 网页制作效果常用代码
  2. 研究人员发现:基于文本的AI模型容易受到改述攻击
  3. wordpress配置SMTP服务发送邮件
  4. 【VBA编程】10.自定义集合
  5. 为Windows Server 2012 R2指定授权服务器
  6. Web Service security UserNameToken 使用
  7. 台湾高僧称游戏中杀人是罪业死后要下地狱
  8. Oracle的列转行问题
  9. laraval如何使用tdd
  10. 家庭主机拨号上网示意图