西南民大oj(两园交求面积)

西南民大oj:http://www.swunacm.com/acmhome/welcome.do?method=index

我的几何不可能那么可爱

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 11            测试通过 : 8

描述

小朋友们 你们好~ 你们都知道AT立场吧

AT立场又叫“A T Field”,是“Absolute Terror Field”的缩写。直译作“绝对恐怖领域”,又称绝对领域。视觉化的AT力场呈金色套合多边形状,拥有AT力场的使徒几乎能抵挡所有常规武器的攻击,只有另一个AT力场才可能将其中和(EVA机体即可展开同样的力场)。AT力场的含义被深化为“将自身与自我(ego)

和客观世界分割开的一堵墙”,揭示出了“每个生物都有AT力场”的道理。渚薰称人类的AT 力场为“心之壁”。

现在 真嗣与渚薰同时放出了AT立场。

我们现在要算的就是两个人AT立场在二维坐标平面的相交面积。

为了使题目简单,我们假设 两人处于同一个二维坐标平面,两人所放的at立场呈完美的圆形,给出两人的坐标,与两人AT立场的释放半径,求相交的面积。

输入

多组输入输出

第一行 真嗣所在的坐标x与坐标y以及AT立场释放半径r

第二行 渚薰所在的坐标x与坐标y以及AT立场释放半径r

(|x|,|y|,|r|<=100,且x,y,r全是整数额)

输出

两人AT立场相交的面积 保留3位小数

样例输入

0 0 1
0 1 1

样例输出

1.228

提示

几何什么的真是太简单了!

题意:给定两园坐标与半径求相交面积。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <stack>
#include <vector>
#include <set>
#include <map>
#define LL long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define N 1000010
using namespace std;
#define sqr(x) ((x)*(x))
const double eps=1e-9;
const double inf=1e10;
const double pi=acos(-1.0);
const int maxn=22;
struct point
{
    double x, y;
};
struct circle
{
    point o;
    double r;
} c[maxn];
int n;

double dis(point a, point b)
{
    return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
}
int sgn(double x)
{
    if(fabs(x)<eps)return 0;
    if(x>0)return 1;
    return -1;
}

double circle_inter_area(circle c1, circle c2)
{
    double d=dis(c1.o, c2.o);
    if(c1.r<c2.r)swap(c1, c2);
    if(sgn(d-c1.r-c2.r)>=0)  return 0;//相离或外切
    if(sgn(d-(c1.r-c2.r))<=0)return pi*sqr(c2.r);//内含或内切
    double ang1, ang2;
    ang1=acos((sqr(c1.r)+sqr(d)-sqr(c2.r))/(2.0*c1.r*d));
    ang2=acos((sqr(c2.r)+sqr(d)-sqr(c1.r))/(2.0*c2.r*d));
    double res=ang1*sqr(c1.r)+ang2*sqr(c2.r)-d*c1.r*sin(ang1);
    return res;
}
int main()

{
    while(scanf("%lf%lf%lf%lf%lf%lf",&c[0].o.x, &c[0].o.y, &c[0].r,&c[1].o.x, &c[1].o.y, &c[1].r)>0)
        printf("%.3lf\n", circle_inter_area(c[0],c[1]));
    return 0;
}

时间: 2024-11-05 18:48:46

西南民大oj(两园交求面积)的相关文章

西南民大oj 1762 我的式子不可能那么难写 【波兰式】

描述 啦啦啦.作为一个苦逼的程序猿.?.请看下图... 现在老总想让你帮他儿子写个简单计算器(他儿子小学3年级,嘘!),写不出来就扣奖金..快帮他写吧... 给一个包含+-*/()的正确的表达式.要你计算它的结果. 除法的规则类似C/C++中取整除法.比如:9/5=1 10/5=2 其他规则参照现实... 输入 多组测试样例 一行字符串(长度小于200) 所有参与运算的数字都为小于1000正整数. 表达式中存在空格. 数据保证合法. 输出 一行 表达式的结果 样例输入 1+23+(5-6/(1+

西南民大oj(递推)

我的数学不可能那么难推 时间限制(普通/Java) : 3000 MS/ 9000 MS          运行内存限制 : 65536 KByte总提交 : 49            测试通过 : 24 描述 没什么题出了,怎么办呀~ 好吧,百度一道去. 于是此题横空出世,只为开心. 小明喜欢下棋,一日他闲来无聊,将黑白棋子排成一长条观察,发现黑色混在一起好难看啊. 随即想到,黑与黑子不相邻,摆放成一长条,有多少种可能乎?! 输入 多组测试数据,(大概1w组吧) 第一行,棋子的总数 n  (

西南民大oj(矩阵快速幂)

我的名字不可能那么难记 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte总提交 : 16            测试通过 : 9 描述 Nirvava:Hi,Misaki,听说ZC要离开了.. Misaki:好走不送,祝一帆风顺… Nirvana: 但他留了好多doge给我们… Misaki:…… Nirvana:而且他们还有名字,名字如下. 据说ZC离去的原因之一就是因为第N个doge老是问他能不能记住它的名字. Mi

2015民大开学典礼|蒙圣光:从现在看未来,在未来看现在

?? [致谢:应母校之邀,回来给8000多名学弟学妹们作开学典礼的分享,感到非常的荣幸,我想自已只是一名喜欢折腾和坚持不懈的创业者,离世人眼里的成功者还很远很远,我都还在不停地奋斗与成长,我想一定是因为赶上了一个大众创业万众创新的美好时代,年轻的学生们需要这种精神,于是苦逼的创业者成了分享经验的热门,但回归现实,革命尚未成功,同学仍需努力!感谢学校领导.感谢校友办的指导与支持!] 分享全文: 尊敬的各位老师,亲爱的同学们: 大家上午好! 我是西南民族大学94级计算机科学与技术学院的学生.今天能够

各大Oj平台介绍

1.题库与网站资源题库-在线提交系统(Online Judge)简介   下面是几个比较大的在线提交系统(OnlineJudge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有Pascal/C/C++/Java)写好源代码提交即可,会实时返回信息告诉你是否正确.采用黑箱测试,系统里有一套标准的输入输出数据(对外保密,而且通常数据很多很怪),你的程序的输出和标准输出完全符合即可.   常见的返回信息有 AC(Accepted,通过).WA(Wrong Answer,输出有错误

POJ 1279 Art Gallery(半平面交求多边形核的面积)

题目链接 题意 : 求一个多边形的核的面积. 思路 : 半平面交求多边形的核,然后在求面积即可. #include <stdio.h> #include <string.h> #include <iostream> #include <math.h> using namespace std ; struct node { double x; double y ; } p[1510],temp[1510],newp[1510];//p是最开始的多边形的每个点,

POJ 3335 Rotating Scoreboard(半平面交求多边形核)

题目链接 题意 : 给你一个多边形,问你在多边形内部是否存在这样的点,使得这个点能够看到任何在多边形边界上的点. 思路 : 半平面交求多边形内核. 半平面交资料 关于求多边形内核的算法 什么是多边形的内核? 它是平面简单多边形的核是该多边形内部的一个点集,该点集中任意一点与多边形边界上一点的连线都处于这个多边形内部.就是一个在一个房子里面放一个摄像 头,能将所有的地方监视到的放摄像头的地点的集合即为多边形的核. 如上图,第一个图是有内核的,比如那个黑点,而第二个图就不存在内核了,无论点在哪里,总

hdu(1255)——覆盖的面积(线段树求面积交)

给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 虽说覆盖两次区域的面积,但是这道题实际上就是求矩形的面积交. 膜拜能够想出这种解法的神牛,竟然能把实际的东西用这么抽象的语言表示出来,实在是佩服,现在关于扫描线的题才做了几道,没有对其深刻理解,但是多练总可以理解的,奋斗吧!!ACMer!!我是永远不会服输的.加油! 下面还是附上题解,写的不够详细清楚还请多多见谅. 首先我想说我是看了别人的博客学了思路,然后按照别人的代码来模仿写的. 这里推荐:http://www.cnblogs.

ACM--数学--湘大oj 1088--Cycloid

湘大oj题目地址:传送门 Cycloid 时间限制:1000 ms  |  内存限制:65536 KB Description A cycloid is the curve traced by a point on the rim of a circular wheel as the wheel rolls along a straight line. It is an example of a roulette, a curve generated by a curve rolling on