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

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. ABAP-smartform-一页3列的条码打印

    1.自建barcode: se73->System bar code->change->create->new input the name of the bar code y ...

  2. 5月5日 while、do{}while

    while .do{}while 一.while的死循环 while (1 == 1)//只要表达式里是true,就是死循环 { //循环内容 } 二.do{}while 不管while是否满足,首先 ...

  3. 转载:Clear Float

    众所周知,平时在写HTML代码时,难免少不了使用Float样式,这样一来,假使您没有清除浮动,那么有浮动元素的父元素容器将元素将无法自动撑 开.换句简单好理解的话来说,假如你在写CODE时,其中div ...

  4. Jquery.Page.js 分页插件的使用

    1.简单直接贴代码 需要引用以下样式和脚本 <link href="~/Scripts/Page/pager.css" rel="stylesheet" ...

  5. 使用BroadcastReceiver监听系统接收的短信

    import android.content.BroadcastReceiver;import android.content.Context;import android.content.Inten ...

  6. Android——关于Activity跳转的返回(无返回值和有返回值)——有返回值

    说明: 跳转页面,并将第一页的Edittext输入的数据通过按钮Button传到第二页用Edittext显示,点击第二页的 返回按钮Button返回第一页(改变第二页的Edittext的内容会传至第一 ...

  7. phpstrom+xdebug+Xdebug helper 调试php

    第一步,php.ini打开xdebug扩展 xdebug.remote_enable=on ; 此地址为IDE所在IP xdebug.remote_host=127.0.0.1 xdebug.remo ...

  8. IT公司100题-16-层遍历二元树

    问题描述: 层遍历二叉树,同一层从左往右打印. 定义二元查找树的结点为: typedef struct BSTreeNode { int data; BSTreeNode *left; BSTreeN ...

  9. C++-Effective C++ Items

    Item2:尽量以const,enum,inline替换#define 原因:1, #define ASPECT_RATIO 1.63 编译错误时产生魔数,应以const double Aspect_ ...

  10. opencv实现图片缩放

    源码 #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/imgproc/img ...