【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 ...
随机推荐
- ORACLE 查看分区表分区大小
SELECT * FROM dba_segments t WHERE t.segment_name ='table_name'; pratition_name : 分区名 bytes : 分区大小( ...
- 39 What Determines the Kind of Person You Are ?是什么决定了你是哪种内型的人 ?
What Determines the Kind of Person You Are ?是什么决定了你是哪种内型的人 ? ①What determines the kind of person you ...
- 201709012工作日记--Android消息机制
1. android的消息机制——Handler机制 参考:http://www.jianshu.com/p/9e4d1fab0f36. Android异步消息处理机制完全解析,带你从源码的角度理解: ...
- QGIS 2014年7月18日版本
4. Building on Windows 4.1. Building with Microsoft Visual Studio This section describes how to buil ...
- (网络流 最大流 Dinic || SAP)Control -- hdu --4289
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4289 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- Scala中()与{}
Scala中()与{}的关系 在Scala中有些时候()和{}是可以相互替换的,但是如果不弄清楚到底什么时候该用(),什么时候该用{},什么时候二者可以相互替换,那么在写代码的时候难免为出错,并且自己 ...
- svg transform
看了这个页面的说明:http://www.2cto.com/kf/201301/186980.html 总结如下:transform包括:translate(tx,ty),scale(sx,sy),r ...
- eclipse 安装
做一个项目,需要搭建环境.使用sql server 2005,tomcat,eclipse.过程真复杂,碰到些小问题,不过都解决了,还算顺利. win7下sql server 2005安装:http: ...
- Java对象的serialVersion序列化和反序列化
Java基础学习总结——Java对象的序列化和反序列化 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种 ...
- python 应用 base64、hmac、hashlib包实现:MD5编码 base64编码解码、SHA256编码、urlsafe_b64encode编码等等基本所有的加密签名的方法
用python做HTTP接口自动化测试的时候,接口的很多参数是经过各种编码加密处理后在传到后台的,这里列举出python实现 应用 base64.hmac.hashlib包实现:md5编码 sha1编 ...