【BZOJ1502】【NOI2005】月下柠檬树 simpson 积分
特别提醒:eps至少要5e-6
首先我们来研究下平行光对投影的影响。
一个二维的图形,若它与光屏平行,那么不论平行光与光屏的夹角为多少,所得图形与原图形全等的(只是位置会有影响)
通过这么一分析,我们将原图形无限切片,并且投影到光屏上去,会发现阴影可以用很多很多个圆的面积并来表示。
这样做显然是T的,我们进行冷静分析(雾)。通过分析得出,阴影为n个圆,n个直角梯形,和一个三角形的并。(如图所示)
在处理的时候,我们可以把三角形当梯形处理。
然后就是愉快地Simpson啦~~~~
#include<bits/stdc++.h>
#define eps 5e-6
#define INF 19260817
#define M 505
using namespace std;
double cx[M]={},cr[M]={};
double lx[M]={},rx[M]={},ly[M]={},ry[M]={};
int n; double f(double x){
double maxn=;
for(int i=;i<=n;i++){
double deltax=abs(x-cx[i]);
if(deltax>cr[i]) continue;
double y=sqrt(cr[i]*cr[i]-deltax*deltax);
maxn=max(maxn,y);
}
for(int i=;i<n;i++)
if(lx[i]<=x&&x<=rx[i]){
double k=(x-lx[i])/(rx[i]-lx[i]);
double y=ly[i]+k*(ry[i]-ly[i]);
maxn=max(maxn,y);
}
return maxn;
} double get(double l,double r){
double mid=(l+r)/;
return (r-l)*(f(l)+*f(mid)+f(r))/;
} double simpson(double l,double r){
double mid=(l+r)/;
double ans1=get(l,r);
double ans2=get(l,mid)+get(mid,r);
if(fabs(ans2-ans1)<eps) return ans2;
return simpson(l,mid)+simpson(mid,r);
} int main(){
double l=INF,r=-INF,alpha;
cin>>n>>alpha; n++;
double tana=tan(alpha);
for(int i=;i<=n;i++){
double hh; scanf("%lf",&hh);
hh=hh/tana;
cx[i]=cx[i-]+hh;
}
for(int i=;i<=n;i++){
if(i!=n)scanf("%lf",cr+i);
l=min(l,cx[i]-cr[i]);
r=max(r,cx[i]+cr[i]);
}
for(int i=;i<n;i++){
double a=cx[i+]-cx[i];
double b=cr[i+]-cr[i];
double sita=acos(-b/a);
lx[i]=cx[i]+cos(sita)*cr[i];
ly[i]= sin(sita)*cr[i];
rx[i]=cx[i+]+cos(sita)*cr[i+];
ry[i]= sin(sita)*cr[i+];
}
double hh=simpson(l,r);
printf("%.2lf\n",hh*);
}
【BZOJ1502】【NOI2005】月下柠檬树 simpson 积分的更多相关文章
- 【BZOJ1502】[NOI2005]月下柠檬树 Simpson积分
[BZOJ1502][NOI2005]月下柠檬树 Description 李哲非常非常喜欢柠檬树,特别是在静静的夜晚,当天空中有一弯明月温柔地照亮地面上的景物时,他必会悠闲地坐在他亲手植下的那棵柠檬树 ...
- BZOJ 1502: [NOI2005]月下柠檬树 [辛普森积分 解析几何 圆]
1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1070 Solved: 596[Submit][Status] ...
- [NOI2005]月下柠檬树(计算几何+积分)
题目描述 李哲非常非常喜欢柠檬树,特别是在静静的夜晚,当天空中有一弯明月温柔 地照亮地面上的景物时,他必会悠闲地坐在他亲手植下的那棵柠檬树旁,独自思 索着人生的哲理. 李哲是一个喜爱思考的孩子,当他看 ...
- [日常摸鱼]bzoj1502[NOI2005]月下柠檬树-简单几何+Simpson法
关于自适应Simpson法的介绍可以去看我的另一篇blog http://www.lydsy.com/JudgeOnline/problem.php?id=1502 题意:空间里圆心在同一直线上且底面 ...
- BZOJ 1502 月下柠檬树(simpson积分)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1502 题意:给出如下一棵分层的树,给出每层的高度和每个面的半径.光线是平行的,与地面夹角 ...
- BZOJ1502: [NOI2005]月下柠檬树
Simpson法相当好用啊!神奇的骗分算法! /************************************************************** Problem: 1502 ...
- 【BZOJ-1502】月下柠檬树 计算几何 + 自适应Simpson积分
1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1017 Solved: 562[Submit][Status] ...
- [NOI2005]月下柠檬树[计算几何(simpson)]
1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1169 Solved: 626[Submit][Status] ...
- [NOI2005]月下柠檬树
题意 F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ ModifyUser autoint Logout 捐赠本站 Probl ...
随机推荐
- 使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点
KbmMW 中支持基于UDP的消息广播,也支持TCP/IP hub/spoke 方式,还有 基于UDP或者TCP/IP 的点对点的消息传输. 1.基于UDP的消息广播
- 带你快速进入.net core的世界(转)
出处:http://www.cnblogs.com/zhaopei/p/netcore.html 阅读目录 vmware虚拟机安装 CentOS7.3安装 Windows的客户端软件 .NET Cor ...
- ics
5.网分用法 时延测试: Format ->Delay Scale Ref -> AUTO SCALE Marker Search -> TRACKING[ON OFF]这样以后把M ...
- DVWA
DVWA默认的用户有5个,用户名密码如下(一个足以): admin/password gordonb/abc123 1337/charley pablo/letmein smithy/password
- Airplace平台
Demo: 左上角:(0, 0)开始导航,手机终端上实时在地图上当前所在显示,当前点以绿色点显示,轨迹点以红色显示. 系统架构:基于移动手机的以网络为辅助的架构.特点:低头顶交流,用户隐私和安全 &g ...
- 休息,考完了MCSD
终于考完了~这次的证书签名居然还是鲍尔默的.
- 20155223 2016-2017-2 《Java程序设计》第9周学习总结
20155223 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 JDBC--Java数据库连接是用于执行SQL的解决方案,开发人员无需接触底层数据 ...
- readLine() 和 "\r","\n" 问题
很多输入流中都有一个函数readLine(),我们也经常使用这个函数,但有时如果不认真考虑,这个函数也会带来一些小麻烦. 如果我们是从控制台读入的话,我们也许没有想过readLine函数到底是根据&q ...
- 团队博客-第三周:需求改进&系统设计(科利尔拉弗队)
针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改 需求规格说明书: 1.打开网页,弹出询问时候创建账号.是:分配数字组成账号,用户填写密码,确定登录进入首页:否,用已有账号登录(传参 ...
- MRP备忘
mrp自动发放计划 物料:采购员 计划员 自动发放时间栏 提前期 mrp:product profile PO:profile自动生成请求 Auto-Release Planned Orders In ...