计算若干个圆与一个矩形的面积并

simpson公式 ans = ( f[l] + f[r] + 4 * f[mid] ) * (r-l) / 6

 1 uses math;
 2 type arr=record x,y:double; end;
 3 const eps=1e-8;
 4 var a,b,n,i:longint;
 5     sl,sr,sm:double;
 6     T:array[0..100] of record x,y,z,r:double; end;
 7     f:array[0..100] of arr;
 8     g:double;
 9 function sum(sl,sr,sm,l,r:double):double;
10 begin
11     exit((sl+sr+4*sm)*(r-l)/6);
12 end;
13 procedure sort(l,r:longint);
14 var i,j:longint; x,y:double;
15     temp:arr;
16 begin
17     i:=l;j:=r;x:=f[(i+j) div 2].x; y:=f[(i+j) div 2].y;
18     while i<=j do
19     begin
20         while (f[i].x<x) or (f[i].x=x) and (f[i].y<y) do inc(i);
21         while (x<f[j].x) or (x=f[j].x) and (y<f[j].y) do dec(j);
22         if i<=j then
23         begin
24             temp:=f[i]; f[i]:=f[j]; f[j]:=temp;
25             inc(i); dec(j);
26         end;
27     end;
28     if l<j then sort(l,j);
29     if i<r then sort(i,r);
30 end;
31 function calc(xx:double):double;
32 var i,j,k:longint;
33     cnt,yy:double;
34 begin
35     k:=0;
36     for i:=1 to n do
37         if abs(T[i].x-xx)+eps<T[i].r then
38         begin
39             yy:=sqrt(sqr(T[i].r)-sqr(T[i].x-xx));
40             inc(k);
41             f[k].x:=T[i].y-yy;
42             f[k].y:=T[i].y+yy;
43         end;
44     sort(1,k);
45     i:=1; cnt:=0;
46     //if xx=a/2 then writeln(f[1].x:4:2,f[1].y:4:2);
47     while i<=k do
48     begin
49         j:=i;
50         while (j<k) and (f[j+1].x<=f[i].y) do
51         begin
52             inc(j);
53             if f[j].y>f[i].y then f[i].y:=f[j].y;
54         end;
55         if not ((f[i].y<0) or (f[i].x>b)) then
56         begin
57             if (f[i].y<=b) and (f[i].x>=0) then cnt:=cnt+f[i].y-f[i].x else
58             if (f[i].y>b)  and (f[i].x<0)  then cnt:=cnt+b else
59             if (f[i].y>b) then cnt:=cnt+b-f[i].x else
60             if (f[i].x<0) then cnt:=cnt+f[i].y;
61         end;
62         i:=j+1;
63     end;
64     exit(cnt);
65 end;
66 function simpson(l,r,mid,sl,sr,sm,w:double):double;
67 var sm1,sm2,m1,m2,w1,w2:double;
68 begin
69     m1:=(l+mid)/2;
70     m2:=(r+mid)/2;
71     sm1:=calc(m1);
72     sm2:=calc(m2);
73     w1:=sum(sl,sm,sm1,l,mid);
74     w2:=sum(sm,sr,sm2,mid,r);
75     if abs(w1+w2-w)<eps then exit(w);
76     exit(simpson(l,mid,m1,sl,sm,sm1,w1)+simpson(mid,r,m2,sm,sr,sm2,w2));
77 end;
78 begin
79     assign(input,'sun.in');reset(input);
80     assign(output,'sun.out');rewrite(output);
81     readln(a,b);
82     readln(g);
83     readln(n);
84     for i:=1 to n do
85     begin
86         readln(T[i].x,T[i].y,T[i].z,T[i].r);
87         T[i].x:=T[i].x+cos(g/180*pi)/sin(g/180*pi)*T[i].z;
88     end;
89     sl:=calc(0); sr:=calc(a); sm:=calc(a/2);
90     //writeln(sl:4:2,' ',sr:4:2,' ',sm:4:2);
91     writeln(a*b-simpson(0,a,a/2,sl,sr,sm,sum(sl,sr,sm,0,a)):0:2);
92     close(input);
93     close(output);
94 end.

转载于:https://www.cnblogs.com/rpSebastian/p/4550188.html

农场阳光 (simpson)相关推荐

  1. android 张口逐帧动画,Android中实现一个简单的逐帧动画(附代码下载)

    场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画. 效果 注: 实现 首先准备一组不同表情的照片,放在res/drawable下,然后在此目录下新建动画资源文件fairy.xml 这 ...

  2. 蓝桥杯练习系统习题-历年真题解析1(完整版)

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-历年真题解析1 题目搜索方式:Ctrl+F--> 输入题目名称-&g ...

  3. 蓝桥杯---历届真题 题解

    试题编号 题解 问题描述 PREV-55 小计算器 模拟 PREV-54 合根植物 并查集 PREV-53 分考场 回溯 PREV-52 小数第n位 数学 PREV-51 观光铁路 PREV-50 对 ...

  4. 蓝桥杯国赛C++A组B组题解整理(第八、七、六、五、四届)

    [写在前面的话19.04.04] 今年省赛的结果出的意外得快,有很多小伙伴来和我分享他们进了省一的喜悦,并问我啥时候更新国赛题解,emmm--不是我不想更新,实在是抽不出时间,有缘再更--虽然不更新题 ...

  5. 算法笔记_203:第四届蓝桥杯软件类决赛真题(C语言B组)

    目录 1 猜灯谜 2 连续奇数和 3 空白格式化 4 高僧斗法 5 格子刷油漆 6 农场阳光   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 猜灯谜 标题:猜灯谜 A 村的元宵节灯会上有一迷题: ...

  6. 蓝桥杯国赛 C/C++ ABC组题解(第四届 ~ 第十二届)

    2020年第十一届蓝桥杯国赛 题号 类型 C++ A组 C++ B组 C++ C组 试题A 结果填空 合数个数 美丽的 2 美丽的 2 试题B 结果填空 含 2 天数 (日期处理) 扩散 (BFS) ...

  7. 2013年第四届蓝桥杯国赛试题及详解(Java本科B组)

    蓝桥杯历年真题题目及题解目录汇总 结果填空 (满分10分) 结果填空 (满分12分) 代码填空 (满分8分) 程序设计(满分17分) 程序设计(满分22分) 程序设计(满分31分) 1.标题:猜灯谜 ...

  8. 蓝桥杯历届试题代码参考

    蓝桥杯历届试题代码参考 历届试题 核桃的数量 打印十字图 带分数 剪格子 错误票据 翻硬币 连号区间数 买不到的数目 大臣的旅费 幸运数 横向打印二叉树 危险系数 网络寻路 高僧斗法 格子刷油漆 农场 ...

  9. 金蝉素数c语言,算法笔记_204:第四届蓝桥杯软件类决赛真题(Java语言C组)

    前言:以下代码仅供参考,若有错误欢迎指正哦~ 1好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的小朋友贴标语.他负责贴的标语是分别写在四块红纸上的四个大字:"好.好.学.习".但 ...

  10. 算法-蓝桥杯习题(5-1)

    蓝桥杯习题 目录 入门训练(详见 算法-蓝桥杯习题(1-1))Go 基础练习(详见 算法-蓝桥杯习题(2-1))Go 基础练习(详见 算法-蓝桥杯习题(2-2))Go 算法训练(详见 算法-蓝桥杯习题 ...

最新文章

  1. Golang的反射reflect深入理解和示例
  2. 分布式K/V存储方案
  3. 假如我是超级卷王......
  4. 为了OFFER,我加深学习队列,现在还一脸懵逼
  5. [蓝桥杯][算法提高VIP]摆花-多重背包计数问题
  6. 【Android基础】短信的发送
  7. oracle imp 包,oracle imp
  8. Python入门基础篇(四)字符串的常用操作,全面易懂,简单实用!!!
  9. Lazada新手开店费用有哪些、具体开店流程详解!
  10. 关于:Google Chrome 官方下载地址
  11. 一文搞懂vim复制粘贴
  12. 腾讯安卓开发面试,腾讯+字节+阿里面经真题汇总,Android篇
  13. 利用SMTP协议实现邮件的发送(以163和qq邮箱为例)
  14. Python开发【Django】:组合搜索、JSONP、XSS过滤
  15. 初识pyQt5之简易翻译软件
  16. stm32常用数据类型 U8、U16、U32到底代表什么?
  17. 0FFICE2007 EXCEL跨工作簿引用的缺点
  18. Vue3 中还处在实验性阶段 Suspense 是个啥?
  19. python excel数据处理功能模块_Python 之Excel 数据处理
  20. Hadoop集群的配置

热门文章

  1. vmware 虚拟机nat连接,局域网访问
  2. 进行一个幂的运算(数学)
  3. Win系统 - 苹果系统里的“提醒事项”可否同步到 Windows 系统中?
  4. Arduino基础入门篇28—舵机控制
  5. SQL Server认证培训与考试
  6. sdcard里边的东西能删除吗_sdcard是什么意思(小米sdcard文件可以删除吗)
  7. 【音频处理】Melodyne 音高调整 ( 打开音频文件 | 选择音高编辑工具 | 样本音高信息 | 音高自动调整 )
  8. modules node 太大了_解决node_modules文件名太长无法删除的两个方法-文件名太长
  9. java reactjs_从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs
  10. 杂牌平板mt6797_联发科MT6797炸现跑分库 强得令人毛骨悚然