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

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

 uses math;
type arr=record x,y:double; end;
const eps=1e-8;
var a,b,n,i:longint;
sl,sr,sm:double;
T:array[..] of record x,y,z,r:double; end;
f:array[..] of arr;
g:double;
function sum(sl,sr,sm,l,r:double):double;
begin
exit((sl+sr+*sm)*(r-l)/);
end;
procedure sort(l,r:longint);
var i,j:longint; x,y:double;
temp:arr;
begin
i:=l;j:=r;x:=f[(i+j) div ].x; y:=f[(i+j) div ].y;
while i<=j do
begin
while (f[i].x<x) or (f[i].x=x) and (f[i].y<y) do inc(i);
while (x<f[j].x) or (x=f[j].x) and (y<f[j].y) do dec(j);
if i<=j then
begin
temp:=f[i]; f[i]:=f[j]; f[j]:=temp;
inc(i); dec(j);
end;
end;
if l<j then sort(l,j);
if i<r then sort(i,r);
end;
function calc(xx:double):double;
var i,j,k:longint;
cnt,yy:double;
begin
k:=;
for i:= to n do
if abs(T[i].x-xx)+eps<T[i].r then
begin
yy:=sqrt(sqr(T[i].r)-sqr(T[i].x-xx));
inc(k);
f[k].x:=T[i].y-yy;
f[k].y:=T[i].y+yy;
end;
sort(,k);
i:=; cnt:=;
//if xx=a/ then writeln(f[].x::,f[].y::);
while i<=k do
begin
j:=i;
while (j<k) and (f[j+].x<=f[i].y) do
begin
inc(j);
if f[j].y>f[i].y then f[i].y:=f[j].y;
end;
if not ((f[i].y<) or (f[i].x>b)) then
begin
if (f[i].y<=b) and (f[i].x>=) then cnt:=cnt+f[i].y-f[i].x else
if (f[i].y>b) and (f[i].x<) then cnt:=cnt+b else
if (f[i].y>b) then cnt:=cnt+b-f[i].x else
if (f[i].x<) then cnt:=cnt+f[i].y;
end;
i:=j+;
end;
exit(cnt);
end;
function simpson(l,r,mid,sl,sr,sm,w:double):double;
var sm1,sm2,m1,m2,w1,w2:double;
begin
m1:=(l+mid)/;
m2:=(r+mid)/;
sm1:=calc(m1);
sm2:=calc(m2);
w1:=sum(sl,sm,sm1,l,mid);
w2:=sum(sm,sr,sm2,mid,r);
if abs(w1+w2-w)<eps then exit(w);
exit(simpson(l,mid,m1,sl,sm,sm1,w1)+simpson(mid,r,m2,sm,sr,sm2,w2));
end;
begin
assign(input,'sun.in');reset(input);
assign(output,'sun.out');rewrite(output);
readln(a,b);
readln(g);
readln(n);
for i:= to n do
begin
readln(T[i].x,T[i].y,T[i].z,T[i].r);
T[i].x:=T[i].x+cos(g/*pi)/sin(g/*pi)*T[i].z;
end;
sl:=calc(); sr:=calc(a); sm:=calc(a/);
//writeln(sl::,' ',sr::,' ',sm::);
writeln(a*b-simpson(,a,a/,sl,sr,sm,sum(sl,sr,sm,,a))::);
close(input);
close(output);
end.

农场阳光 (simpson)的更多相关文章

  1. 2013年第四届蓝桥杯C/C++程序设计本科B组决赛

    1.猜灯谜(枚举) 2.连续奇数和(等差数列) 3.空白格式化(去除空格) 4.高僧斗法(阶梯nim) 5.格子刷油漆(dp) 6.农场阳光 1.猜灯谜 A 村的元宵节灯会上有一迷题:请猜谜 * 请猜 ...

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

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

  3. 第四届蓝桥杯C++B组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜灯谜 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的 ...

  4. 第四届蓝桥杯JavaB组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜灯谜 题目描述 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字 ...

  5. simpson

    使用二次函数拟合复杂的连续函数求积分 对于(l,r)拟合的积分为(r-l)*(f(l)+4*f((l+r)/2)+f(r))/6 ___________________________ BZOJ217 ...

  6. 洛谷P1330封锁阳光大学[二分图染色]

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  7. TYVJ1338 QQ农场

    时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Sandytea前段时间沉迷于QQ农场中……一天夜里,他梦见来到好友X的农场上…… 描述 这个农场和游戏中略有 ...

  8. BZOJ3436——小K的农场

    1.题意:大概是给一些制约限制,问是否存在合法解 2.分析:我们来观察这三个限制 农场a比农场b至少多种植了c个单位的作物     可以变成b 比 a至多多种了-c 农场a比农场b至多多种植了c个单位 ...

  9. 【BZOJ】3436: 小K的农场

    3436: 小K的农场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 938  Solved: 417[Submit][Status][Discuss ...

随机推荐

  1. 张艾迪Eidyzhang:解码天才Eidyzhang的诞生

    AOA解码:天才Eidyzhang的诞生AOA深度解读:世界第一天才Eidyzhang: (TheWorldNo.1Girl+TheWorldNo.1InterentGirl+世界第一女孩+世界第一互 ...

  2. Objective-C:Foundation框架-常用类-NSObject

    NSObject是所有类的基类,其常见用法有: #import <Foundation/Foundation.h> @interface Person : NSObject - (void ...

  3. 固定定位fixed(IE6)

     position: fixed;          left:200px;          top:100px;          _left:200px;          _top:100px ...

  4. 上传项目的更改 info.plist文件

    info.plistOpen AsSource As 添加<key>NSAppTransportSecurity</key>    <dict>        &l ...

  5. 再谈IT行业工程师文化

    为什么是再呢?因为“工程师文化”这种说法网上很多,各种理解,各种版 本,我只是简单说说我的认识,说的不对的地方敬请各位大牛,高手,高高手多多指教,我本身也是个技术人员,不过只是技术不怎么样而已.写这个 ...

  6. POJ 1011 Sticks dfs,剪枝 难度:2

    http://poj.org/problem?id=1011 要把所给的集合分成几个集合,每个集合相加之和ans相等,且ans最小,因为这个和ans只在[1,64*50]内,所以可以用dfs一试 首先 ...

  7. BindingNavigator操作DatagridView的数据

    参考 http://wenku.baidu.com/link?url=NWfEfArPZvDO_aI-xEKBHVGoZY9wQO_Oty_GCsGLiPspheCzFYLf_dytuWAqN2_0A ...

  8. visualsvn server 安装提示无法启动

    需要在服务里面给visualsvn server 用本地账户登陆权限

  9. TClientDataSet 设计期 多次New 字段问题

    第一次New几个字段后,右键菜单CreateDataSet 后来需要再New几个字段. 右键菜单,先 ClearData(不这样,会报 打开的数据集不能执行 这个New字段的操作),然后在 字段编辑器 ...

  10. WebBrowers & HtmlViewers collection

    WebBrowers & HtmlViewers collection 浏览: 加入我的收藏 楼主: THtmlViewerhttps://github.com/BerndGabriel/Ht ...