农场阳光 (simpson)
计算若干个圆与一个矩形的面积并
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)的更多相关文章
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛
1.猜灯谜(枚举) 2.连续奇数和(等差数列) 3.空白格式化(去除空格) 4.高僧斗法(阶梯nim) 5.格子刷油漆(dp) 6.农场阳光 1.猜灯谜 A 村的元宵节灯会上有一迷题:请猜谜 * 请猜 ...
- 算法笔记_203:第四届蓝桥杯软件类决赛真题(C语言B组)
目录 1 猜灯谜 2 连续奇数和 3 空白格式化 4 高僧斗法 5 格子刷油漆 6 农场阳光 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 猜灯谜 标题:猜灯谜 A 村的元宵节灯会上有一迷题: ...
- 第四届蓝桥杯C++B组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜灯谜 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的 ...
- 第四届蓝桥杯JavaB组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜灯谜 题目描述 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字 ...
- simpson
使用二次函数拟合复杂的连续函数求积分 对于(l,r)拟合的积分为(r-l)*(f(l)+4*f((l+r)/2)+f(r))/6 ___________________________ BZOJ217 ...
- 洛谷P1330封锁阳光大学[二分图染色]
题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...
- TYVJ1338 QQ农场
时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Sandytea前段时间沉迷于QQ农场中……一天夜里,他梦见来到好友X的农场上…… 描述 这个农场和游戏中略有 ...
- BZOJ3436——小K的农场
1.题意:大概是给一些制约限制,问是否存在合法解 2.分析:我们来观察这三个限制 农场a比农场b至少多种植了c个单位的作物 可以变成b 比 a至多多种了-c 农场a比农场b至多多种植了c个单位 ...
- 【BZOJ】3436: 小K的农场
3436: 小K的农场 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 938 Solved: 417[Submit][Status][Discuss ...
随机推荐
- Oracle函数大全之转换函数
chartorowid(c1) [功能]转换varchar2类型为rowid值 [参数]c1,字符串,长度为18的字符串,字符串必须符合rowid格式 [返回]返回rowid值 [示例] SELECT ...
- 生产订单修改删除组件BDC
可用函数修改:CO_XT_COMPONENT_CHANGE,一次一个 FORM prm_change_bom . DATA:gw_zstypf TYPE zstypf. DATA:lv_rspos T ...
- .NET GC机制学习笔记
学习笔记内容来自网络资料摘录http://www.cnblogs.com/springyangwc/archive/2011/06/13/2080149.html 1.GC介绍 Garbage Col ...
- linux apache 自动监护脚本
1 首先安装curl yum install curl 2 编写shell vi restart_apache.sh 写入一下内容 #!/bin/bashURL="http://127.0. ...
- cocopods的使用方法
虽然网上关于CocoaPods安装教程多不胜数,但是我在安装的过程中还是出现了很多错误,所以大家可以照下来步骤装一下,我相信会很好用. 前言 在iOS项目中使用第三方类库可以说是非常常见的事,但是要正 ...
- 一模 (3) day1
第一题: 题目大意:给出m个小于n的数,求出出现次数大于m div 2 的数. 1<=n<=2^31 1<=m<=10000 解题过程: 1.看到m的数据范围比较小,直接 ...
- NOIP2010解题报告
今天状态不错..1个小时AC了前3题,第四题第一次也拿到了80%的分数,后来换了算法才拿到全部分数.. 第一题: 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 这个翻译软件的原 ...
- 详解centos用户&组权限&添加删除用户
1.Linux用户操作系统 Linux操作系统是多用户多任务操作系统,包括用户账户和组账户两种: 细分用户账户(普通用户账户,超级用户账户)除了用户账户以为还有组账户所谓组账户就是用户账户的集合,ce ...
- node cheerio
所谓工欲善其事,必先利其器,所以通读了cheerio的API,顺便翻译了一遍,有些地方因为知道的比较少,不知道什么意思,保留了英文,希望各位不吝告诉我,然后一起把这个翻译完成. ###cheerio ...
- HDU 1693 二进制表示的简单插头dp
题目大意: 找到多条回路覆盖所有非障碍格子,问这样回路的种数 这里的插头与URAL1519 不一样的是 只要管它是否存在即可,只需要1个二进制位表示状态 #include <cstdio> ...