lrj的代码常数太大T了QAQ,改了一下。

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std; typedef double db;
const int N=;
int n,t,lm=,rm=-,v[N],q[N],x[N],y[N],r[N];
pair<db,db> b[N]; db F(db a) {
int tt=;
db re=,ls=-;
for(int i=;i<=t;i++) if(fabs(a-x[q[i]])<=r[q[i]]) {
db k=sqrt(r[q[i]]*r[q[i]]-(a-x[q[i]])*(a-x[q[i]]));
b[++tt].first=y[q[i]]-k,b[tt].second=y[q[i]]+k;
}
sort(b+,b++tt);
for(int i=;i<=tt;i++) {
if(b[i].first>ls) re+=b[i].second-b[i].first,ls=b[i].second;
else if(b[i].second>ls) re+=b[i].second-ls,ls=b[i].second;
}
return re;
}
db asr(db a,db b,db c,db A,db B,db C) {
db l=F((a+c)/),r=F((c+b)/),aa=(A+C*+B)*(b-a)/,L=(A+*l+C)*(c-a)/,R=(C+*r+B)*(b-c)/;
if(fabs(L+R-aa)<=1e-) return aa;
return asr(a,c,(a+c)/,A,C,l)+asr(c,b,(b+c)/,C,B,r);
} int main() {
scanf("%d",&n);
for(int i=;i<=n;i++) {
scanf("%d%d%d",&x[i],&y[i],&r[i]);
lm=min(lm,x[i]-r[i]),rm=max(rm,x[i]+r[i]);
}
for(int i=;i<=n;i++) if(!v[i])
for(int j=;j<=n;j++) if(i!=j&&!v[j]) {
if(sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))+r[j]<=r[i]) v[j]=;
}
for(int i=;i<=n;i++) if(!v[i]) q[++t]=i;
printf("%.3f",asr(lm,rm,(lm+rm)/2.0,,,F((lm+rm)/2.0)));
return ;
}

Simpson积分(BZOJ2178)的更多相关文章

  1. [BZOJ 2178] 圆的面积并 【Simpson积分】

    题目链接:BZOJ - 2178 题目分析 用Simpson积分,将圆按照 x 坐标分成连续的一些段,分别用 Simpson 求. 注意:1)Eps要设成 1e-13  2)要去掉被其他圆包含的圆. ...

  2. [BZOJ 1502] [NOI2005] 月下柠檬树 【Simpson积分】

    题目链接: BZOJ - 1502 题目分析 这是我做的第一道 Simpson 积分的题目.Simpson 积分是一种用 (fl + 4*fmid + fr) / 6 * (r - l) 来拟合 fl ...

  3. hdu 1724 Ellipse simpson积分

    /* hdu 1724 Ellipse simpson积分 求椭圆的部分面积 simpson积分法 http://zh.wikipedia.org/zh-tw/%E8%BE%9B%E6%99%AE%E ...

  4. 自适应Simpson积分

    自适应Simpson积分 作用 如标题所示,这玩意就是当你不会微积分的时候来求积分的. 总所周知,积分的定义就是函数的某一段与坐标轴之间的面积. 那么,自适应Simpson积分就是一种可以再某些精度下 ...

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

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

  6. 【bzoj1502】[NOI2005]月下柠檬树 自适应Simpson积分

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

  7. BZOJ 2178 圆的面积并 ——Simpson积分

    [题目分析] 史上最良心样例,史上最难调样例. Simpson积分硬上. 听说用long double 精度1e-10才能过. 但是double+1e-6居然过了. [代码] #include < ...

  8. SPOJ CIRU The area of the union of circles ——Simpson积分

    [题目分析] 圆的面积并. 直接Simpson积分,(但是有计算几何的解法,留着flag). simpson积分,如果圆出现了不连续的情况,是很容易出事情的.(脑补一下) 但是没有什么办法,本来就是一 ...

  9. HDU 1724 Ellipse ——Simpson积分

    [题目分析] 一看题目,直接把椭圆积分起来就可以了嘛. 然后发现椭圆比较难积分,还是算了吧. 用Simpson积分硬上. 大概就是用二次函数去拟合面积. [代码] #include <cstdi ...

随机推荐

  1. 一个轻量级iOS安全框架:SSKeyChain

    摘要 SSKeyChains对苹果安全框架API进行了简单封装,支持对存储在钥匙串中密码.账户进行访问,包括读取.删除和设置.SSKeyChain的作者是大名鼎鼎的SSToolkit的作者samsof ...

  2. 22.C++- 继承与组合,protected访问级别

    在C++里,通过继承和组合实现了代码复用,使得开发效率提高,并且能够通过代码看到事物的关系 组合比继承简单,所以在写代码时先考虑能否组合,再来考虑继承. 组合的特点 将其它类的对象作为当前类的成员使用 ...

  3. Browser Object Model

    BOM:浏览器提供的一系列对象 window对象是BOM最顶层对象 * 计时器setInterval(函数,时间)设置计时器 时间以毫秒为单位 clearInterval(timer) 暂停计时器se ...

  4. 静态链表C语言数据结构

    静态链表就是将数组实现单链表: int Malloc_SLL(StaticLinkList space) { int i = space[0].cur;//取得第一个头节点的下标 if( space[ ...

  5. LeetCode & Q219-Contains Duplicate II

    Array Hash Table Description: Given an array of integers and an integer k, find out whether there ar ...

  6. Mego开发文档 - 基本保存操作

    基本保存操作 在Mego中没有更改跟踪,也就是说所有的新增.更新及删除都需要开发者自行判断.Mego会最为实际的将各个数据操作提交给数据库并执行. 添加数据 using (var db = new O ...

  7. Docker学习笔记 - Docker的简介

    传统硬件虚拟化:虚拟硬件,事先分配资源,在虚拟的硬件上安装操作系统,虚拟机启动起来以后资源就会被完全占用. 操作系统虚拟化:docker是操作系统虚拟化,借助操作系统内核特性(命名空间.cgroups ...

  8. java 数组排序方法整理,简单易懂,

    1.快速排序:首先是最简单的Array.sort,直接进行排序: public static void main(String[] args) { int[] arr = {4,3,5,1,7,9,3 ...

  9. leetcode算法: Find Bottom Left Tree Value

    leetcode算法: Find Bottom Left Tree ValueGiven a binary tree, find the leftmost value in the last row ...

  10. 关于sql多表去重问题

    很多人新手对于数据库distinct 的用法有误解接下来我们看一段代码: 数据表:table  id name    1 a   2 b   3 c   4 c   5 b   我们使用distinc ...