BZOJ 2178 Simpson积分
思路:
我发现能用Simpson积分水的题 好像都是裸题诶233333
//By SiriusRen
#include <bits/stdc++.h>
using namespace std;
#define pr pair<double,double>
const int N=;
int n,ban[N];double inf=1e100,l=inf,r=-inf;pr p[N];
struct Point{int x,y;};
double dis(Point a,Point b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
struct Circle{
Point p;int r;
pr f(double x){
if(r<=abs(p.x-x))return pr(,);
double t=sqrt(r*r-(p.x-x)*(p.x-x));
return pr(1.0*p.y-t,1.0*p.y+t);
}
}c[N];
double Cut(double x){
double ret=,last=-inf;int cnt=;
for(int i=;i<=n;i++){
p[++cnt]=c[i].f(x);
if(p[cnt]==pr(,))cnt--;
}
sort(p+,p++cnt);
for(int i=;i<=cnt;i++){
if(p[i].first>last)ret+=p[i].second-p[i].first,last=p[i].second;
else if(p[i].second>last)ret+=p[i].second-last,last=p[i].second;
}return ret;
}
double Simpson(double l,double r,double mid,double Cl,double Cr,double Cm){
double tCl=Cut((l+mid)/),tCr=Cut((mid+r)/);
double ans=(r-l)*(Cl+Cr+*Cm)/,lans=(mid-l)*(Cl+Cm+*tCl)/,rans=(r-mid)*(Cr+Cm+*tCr)/;
if(abs(lans+rans-ans)<1e-)return ans;
else return Simpson(l,mid,(l+mid)/,Cl,Cm,tCl)+Simpson(mid,r,(mid+r)/,Cm,Cr,tCr); }
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d%d",&c[i].p.x,&c[i].p.y,&c[i].r);
l=min(l,(double)c[i].p.x-c[i].r);
r=max(r,(double)c[i].p.x+c[i].r);
}
for(int i=;i<=n;i++){
if(ban[i])continue;
for(int j=i+;j<=n;j++){
if(ban[j])continue;
if(dis(c[i].p,c[j].p)<=c[i].r-c[j].r)ban[j]=;
}
}
for(int i=;i<=n;i++)if(ban[i])swap(ban[i],ban[n]),swap(c[i--],c[n--]);
printf("%.3lf\n",Simpson(l,r,(l+r)/,,,Cut((l+r)/)));
}
BZOJ 2178 Simpson积分的更多相关文章
- BZOJ 1845 Simpson积分
思路: Simpson积分直接上 限制一下递归深度+精度就好了 (难以理解为什么这么多人写扫描线) //By SiriusRen #include <bits/stdc++.h> usi ...
- [BZOJ 2178] 圆的面积并 【Simpson积分】
题目链接:BZOJ - 2178 题目分析 用Simpson积分,将圆按照 x 坐标分成连续的一些段,分别用 Simpson 求. 注意:1)Eps要设成 1e-13 2)要去掉被其他圆包含的圆. ...
- BZOJ 2178 圆的面积并 ——Simpson积分
[题目分析] 史上最良心样例,史上最难调样例. Simpson积分硬上. 听说用long double 精度1e-10才能过. 但是double+1e-6居然过了. [代码] #include < ...
- [BZOJ 1502] [NOI2005] 月下柠檬树 【Simpson积分】
题目链接: BZOJ - 1502 题目分析 这是我做的第一道 Simpson 积分的题目.Simpson 积分是一种用 (fl + 4*fmid + fr) / 6 * (r - l) 来拟合 fl ...
- 自适应Simpson积分
自适应Simpson积分 作用 如标题所示,这玩意就是当你不会微积分的时候来求积分的. 总所周知,积分的定义就是函数的某一段与坐标轴之间的面积. 那么,自适应Simpson积分就是一种可以再某些精度下 ...
- hdu 1724 Ellipse simpson积分
/* hdu 1724 Ellipse simpson积分 求椭圆的部分面积 simpson积分法 http://zh.wikipedia.org/zh-tw/%E8%BE%9B%E6%99%AE%E ...
- 【BZOJ1502】[NOI2005]月下柠檬树 Simpson积分
[BZOJ1502][NOI2005]月下柠檬树 Description 李哲非常非常喜欢柠檬树,特别是在静静的夜晚,当天空中有一弯明月温柔地照亮地面上的景物时,他必会悠闲地坐在他亲手植下的那棵柠檬树 ...
- 【bzoj1502】[NOI2005]月下柠檬树 自适应Simpson积分
题目描述 李哲非常非常喜欢柠檬树,特别是在静静的夜晚,当天空中有一弯明月温柔地照亮地面上的景物时,他必会悠闲地坐在他亲手植下的那棵柠檬树旁,独自思索着人生的哲理.李哲是一个喜爱思考的孩子,当他看到在月 ...
- SPOJ CIRU The area of the union of circles ——Simpson积分
[题目分析] 圆的面积并. 直接Simpson积分,(但是有计算几何的解法,留着flag). simpson积分,如果圆出现了不连续的情况,是很容易出事情的.(脑补一下) 但是没有什么办法,本来就是一 ...
随机推荐
- CCF201604-1 折点计数 java(100分)
试题编号: 201604-1 试题名称: 折点计数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个整数表示一个商店连续n天的销售量.如果某天之前销售量在增长,而后一天 ...
- [K/3Cloud]K3Cloud平台开发之Python插件
有时候我们的表单可能很简单,只是一个简单交互的表单,但有可能还是要劳师动众的给它建个工程写个插件,是不是很不爽?例如我有如下一个表单: 功能很简单就是选个业务对象,收集绑定几个字段名,然后确定返回一个 ...
- codevs2370 小机房的树
题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上.有一天,他们想爬到一个节点上去搞基,但是作为两只虫子, ...
- A multiprocessing system including an apparatus for optimizing spin-lock operations
A multiprocessing system having a plurality of processing nodes interconnected by an interconnect ne ...
- zabbix全方位监控MySQL +cacti监控mysql
http://www.linuxidc.com/Linux/2015-02/112690.htm http://john88wang.blog.51cto.com/2165294/1596272?ut ...
- 查看表空间使用率及shrink 表空间
首先,可以通过下面的sql statement来查看表空间的使用情况.注意,该语句是在10g下测试过. SELECT FREE.TABLESPACE_NAME, FREE.FREE_SPACE/TOT ...
- pg_dump: [archiver (db)] connection to database “dbase” failed: FATAL: Peer authentication failed for user “postgres”
"Peer authentication" means that it's comparing your database username against your Linux ...
- UIView的层介绍
UIView的层介绍 subview在西安市到屏幕上时,是位于superview上层的. 同一个view的subview时依照增加的顺序显示相应层的.越晚增加的subview显示在越上层,反之也是如此 ...
- wpf slider进度条的样式模板,带有进度颜色显示
效果图: 仅仅需在前台加上这段代码就可以: <UserControl.Resources> <!--笔刷--> <LinearGradientBrush x:Key=&q ...
- URAL 1326. Bottle Taps(简单的状压dp)
题目不太好读懂,就是先给你一个n代表要从n个物品中买东西,然后告诉你这n个东西的单位价格,在给你m个集合的情况.就是每一个结合中有x件物品.他们合起来买的价格是k.这x件物品依次是:p1--px.之后 ...