自适应Simpson积分求面积并。
平行光啊,它有个好,照下来那影子和原来平行于地面的物体是全等。于是我们就有了横向排布着的一些圆和一些线段,然后算就好了。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 550;
const int INF  = 0x3f3f3f3f;
#define EPS  1e-6
struct Circle {double x,R;
}C[maxn];
struct Line {double k,b;double L,R;
}line[maxn];int lines=0;
int cnt;
int n;double alpha,L,R;
double F(double x) {double ret = 0;for(int i = 1; i <= lines; i++) {if( x >= line[i].L && x <= line[i].R ) ret = max( ret, line[i].k * x + line[i].b );}for(int i = 1; i <= n; i++ ) {if( x >= C[i].x-C[i].R && x <= C[i].x + C[i].R ) {ret = max( ret , sqrt ( C[i].R * C[i].R - (x-C[i].x)*(x-C[i].x) ) );}}return ret;
}
double Simpson(double L,double R,double mid,double FL,double FR,double FM) {double tFL = F( (L+mid)/2), tFR = F((mid+R)/2);double ans = (R-L)*(FL+FR+4*FM)/6;double Lans = (mid-L)*(FL+FM+4*tFL)/6;double Rans = (R-mid)*(FM+FR+4*tFR)/6;if (fabs(Lans+Rans-ans) < EPS ) return ans;return Simpson(L,mid,(L+mid)/2,FL,FM,tFL) + Simpson(mid,R,(mid+R)/2,FM,FR,tFR);
}
int main() {freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);scanf("%d%lf",&n,&alpha);n++;alpha = 1.0 / tan(alpha);C[0].x=0;for(int i = 1; i <= n; i++) {double x;scanf("%lf",&x);C[i].x = C[i-1].x + x * alpha;}L=INF;R=-INF;for(int i = 1; i <= n; i++) {scanf("%lf",&C[i].R);L = min(L, C[i].x - C[i].R);R = max(R, C[i].x + C[i].R);}for(int i = 1; i < n; i++) {if( C[i+1].x-C[i].x - fabs(C[i+1].R-C[i].R) < EPS )  continue;lines++;double sina = ( C[i].R - C[i+1].R) / ( C[i].x - C[i+1].x);double cosa = sqrt(1.0 - sina*sina);double tana = sina / cosa;line[lines].L = C[i].x - C[i].R * sina;line[lines].R = C[i+1].x - C[i+1].R * sina;line[lines].k = tana;line[lines].b = C[i].R  * cosa - line[lines].L * tana;}printf("%.2lf\n",2*Simpson(L,R,(L+R)/2.0,0,0,F((L+R)/2.0)));}

Bzoj1502【NOI2005】月下柠檬树相关推荐

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

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

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

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

  3. [BZOJ1502][NOI2005]月下柠檬树(辛普森积分+解析几何)

    题目: 我是超链接 题解: 首先我们理解一下投影的性质,也就是投影出来的图形一定跟原图形全等. 考虑一下圆形投影下来是什么呢?和原来一样的圆形啊 怎么转化竖着的树呢? 也就是树高*cot(α) 那么我 ...

  4. [BZOJ1502][NOI2005]月下柠檬树(辛普森积分)

    === === 这里放传送门 === === 题解 据说这题正解好像是各种分类讨论一块块求面积? 然而一开始知道这题辛普森积分就可以过但是差一点还是写成了那种分类讨论的方法..就一开始非常无脑求了公切 ...

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

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

  6. 【BZOJ-1502】月下柠檬树 计算几何 + 自适应Simpson积分

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

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

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

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

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

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

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

  10. 1502: [NOI2005]月下柠檬树 - BZOJ

    Description Input 文件的第1行包含一个整数n和一个实数alpha,表示柠檬树的层数和月亮的光线与地面夹角(单位为弧度).第2行包含n+1个实数h0,h1,h2,-,hn,表示树离地的 ...

最新文章

  1. 谢文睿:西瓜书 + 南瓜书 吃瓜系列 1. 一元线性回归
  2. c 清除 html标签,13.4. 去除HTML的标签tag:htmlRemoveTag
  3. JSP、EL和JSTL-学习笔记04【JSTL常用标签】
  4. 20145231第四周学习笔记
  5. CentOS7 最小化安装后的必备操作
  6. mysql如何给表字段加密_Mysql 字段加密
  7. Bash 使用技巧大补贴
  8. PostgreSQL 13 Beta 1 发布,大量新特性
  9. 非标准语法;请使用 _国际汉语教学中 语法点讲解的具体方法
  10. 指针与指针指向的内容(四)
  11. 超级硬盘恢复软件真的超好用哦!
  12. Java单例模式简单代码
  13. vmware workstation server 服务无法启动
  14. 【带着问题学PMP】【4.1】制定项目章程
  15. NET 常见网络命令
  16. 【机器学习入门】(6) 随机森林算法:原理、实例应用(沉船幸存者预测)附python完整代码和数据集
  17. SQL考试练习题及全部答案3
  18. Python初级项目之随机漫步的Matplotlib实现
  19. 独立开发仿造一个开关机器人
  20. 教你一招,免费拆分pdf

热门文章

  1. 服务器cpu性能最大值,服务器cpu性能排行
  2. vmware16安装macOS
  3. 用spss判断正态性检验的几种方法
  4. 2017年1月历史文章汇总
  5. MongoDB基础教程
  6. Macbook忘记密码的解决方法
  7. 一个简单的Vue过滤器
  8. Duplicate entry ‘***‘ for key ‘UK_mjrobjw9m8n29ou6083ixjxmf‘
  9. 使用YOLOv5实现图片、视频的目标检测
  10. 做程序员必须懂英语吗?_您必须懂英语才能成为程序员吗?