【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 ...
随机推荐
- 30. Child Labor Problem and Its Solution 童工问题及解决方法
30. Child Labor Problem and Its Solution 童工问题及解决方法 ① Over a hundred years ago,Charles Dickens shocke ...
- 在windows7下创建ftp服务站点
1.开始->控制面板->程序(点击“卸载程序”)->启动或关闭windows功能->Internet Information Services(Internet信息服务)-&g ...
- Git客户端命令总结
一:常用命令 1.先进入项目目录,然后git init:则会为此 项目/目录 创建一个本地仓库(或重新初始化这个本地仓库),可以用ls -a ./看到多了.git目录: 或者git init /hom ...
- 浅谈webuploader上传文件
官网:http://c7.gg/fw4sn 案例: 文件上传进度 // 文件上传过程中创建进度条实时显示. uploader.on( 'uploadProgress', function( file, ...
- day02(继承,重写,this,super,final,抽象类)
继承 概述:日常生活中儿女总会继承长辈的遗产,java语言也是.通过继承多种实物之间形成一种关系. 特点: ①一个类只能继承一个父类 ②一个父类可以有多个子类 ③可以多层继承(a类继承b类 C类继 ...
- (并查集 建立关系)食物链 -- POJ-- 1182
链接: http://poj.org/problem?id=1182 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82830#probl ...
- Netty Nio启动全流程
Netty Nio启动全流程 1. 各组件之间的关系 说明:EventLoopGroup类似线程池,EventLoop为单线程,每个EventLoop关联一个Nio Selector,用于注册Chan ...
- 【转】C#发送Email邮件
转自:http://hi.baidu.com/bluesky_cn/item/8bb060ace834c53f020a4df2 下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需 ...
- Jersey构建Restful风格的webservices
最近一直在搞老项目的开发工作,很少写博文了.听了两位阿里巴巴大牛的讨论,决定试试用restful风格的webservices看看. 这里用的是Jersey这个框架,刚开始弄,有点麻烦,只能到处查资料. ...
- Visual Studio模板
转载自MSDN,此文仅作参考. http://msdn.microsoft.com/zh-cn/library/6db0hwky(VS.80).aspx 1. 如何导入“项目模板(Project Te ...