清北学堂 站军姿

/*2bc*cosA=b^2+c^2-a^2 模拟计算 50分*/
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const double t=3.1415926535898;
int n;
double a,b,c,x,y,z,x2,y2,z2,s,k,m,w,p;
int main ()
{
    freopen ("standing.in","r",stdin);
    freopen ("standing.out","w",stdout);
    scanf ("%d",&n);
    for (int i=1;i<=n;i++)
    {
        scanf ("%lf%lf%lf%lf%lf%lf",&x,&y,&z,&x2,&y2,&z2);
        if (sqrt(abs(x-x2)*abs(x-x2)+abs(y-y2)*abs(y-y2))>z+z2)
            printf ("%.3lf\n",z*z*t+z2*z2*t);
        else if ((x+z>x2+z2&&x-z<x2-z2&&y+z>y2+z2&&y-z<y2-z2)||(x+z<x2+z2&&x-z>x2-z2&&y+z<y2+z2&&x-z>y2-z2))
            printf ("%.3lf\n",max(z*z*t,z2*z2*t));
        else
        {
            s=z*z*t+z2*z2*t;
            k=sqrt(abs(x-x2)*abs(x-x2)+abs(y-y2)*abs(y-y2));
            a=(z*z-z2*z2+k*k)/(2*k);
            b=k-a;

            c=2*sqrt(z*z-a*a);
            w=(2*z*z-c*c)/(2*z*z);
            p=acos(w);
            m=(z+z+c)/2;
            s-=((p*z*z)/2-sqrt(m*(m-c)*(m-z)*(m-z)));

            c=2*sqrt(z2*z2-b*b);
            w=(2*z2*z2-c*c)/(2*z2*z2);
            p=acos(w);
            m=(z2+z2+c)/2;
            s-=((p*z2*z2)/2-sqrt(m*(m-c)*(m-z2)*(m-z2)));
            printf ("%.3lf\n",s);
        }
    }
    return 0;
}
时间: 10-04

清北学堂 站军姿的相关文章

清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)

清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算一次成绩.参与享优惠 描述 这是一道有背景的题目,小A也是一个有故事的人.但可惜的是这里纸张太小,小A无法把故事详细地说给大家听.可能小A自己也讲不清楚自己的故事,因为如果讲清了,也就没有这道题目了-- 小A的问题是这个样子,它找到了n份不同的工作,第i份工作每个月有ai的工资,每份工作需要小A每天

清北学堂 最大速度

最大速度 (maxv.pas/c/cpp) [问题描述] Ron的老爸的Flying Car出了些问题,现在必须要在地上跑到很大的速度才能飞起来,但是Flying Car飞起来的那一刻不能被麻瓜看到.为了确保安全飞起来,需要知道车到可以飞起来的地方时所能达到的最大速度.他的Flying Car一开始拥有一个初速度,移动一次增加速度1:因为车道很窄,宽度只有1,所以仅当要转向的方向有路时才能转,左转一次减少速度35,右转一次减少速度40,当前进.左转.右转都无路可走的时候,调头(连左转两次或连右转

2017清北学堂集训笔记——动态规划Part2

啊~到下午啦,我们进入Part2!--一个简洁的开头 我们来探讨第一类问题--路径行走问题 经典例题:方格取数(Luogu 1004) 设有 N*N 的方格图 (N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 0.* 某人从图的左上角的 A 点出发,可以向下行走,也可以向右走,直到到达右下角的 B 点.在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字 0).* 此人从 A 点到 B 点共走两次,试找出 2 条这样的路径,使得取得的数之和为最大.- 与数字金字塔

洛谷P1080 [NOIP2012提高组D1T2]国王游戏 [2017年5月计划 清北学堂51精英班Day1]

P1080 国王游戏 题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在队伍的最前面.排好队后,所有的大臣都会获得国王奖赏的若干金币,每 位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右 手上的数,然后向下取整得到的结果. 国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序, 使得获得奖赏最多的大

清北学堂2017NOIP冬令营入学测试

P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算一次成绩.参与享优惠 描述 这是一道有背景的题目,小A也是一个有故事的人.但可惜的是这里纸张太小,小A无法把故事详细地说给大家听.可能小A自己也讲不清楚自己的故事,因为如果讲清了,也就没有这道题目了-- 小A的问题是这个样子,它找到了n份不同的工作,第i份工作每个月有ai的工资,每份工作需要小A每天工作8小时,一周工作7天.小A想知道性价

清北学堂 逃亡的准备

  逃亡的准备 (hallows.pas/c/cpp)   [问题描述] 在<Harry Potter and the Deathly Hallows>中,Harry Potter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的大小有限,所以我们只能够在里面放入非常重要的物品,现在给出该种物品的数量.体积.价值的数值,希望你能够算出怎样能使背包的价值最大的组合方式,并且输出这个数值,赫敏会非常地感谢你. [输入文件](hallows.in) (1)第一行有2个整数,物品种数n和背包装

5月3日济南清北学堂随堂测试题目

消失的数字(number) Time Limit:1000ms   Memory Limit:128MB 题目描述 rsy拥有n个数,这n个数分别是a1,a2,-,an. 后来出现了一个熊孩子zhw,用橡皮擦去了其中若干个数字,并且打乱了剩下的数字.rsy赶到现场后只剩下了m个数字b1,b2,-,bm,她想知道哪些数字被擦去了. 现在你需要告诉rsy被擦去的n-m个数是什么. 输入格式(number.in) 第一行一个数n,第二行n个数ai,表示一开始的数字. 第三行一个数m,第四行m个数bi,

清北学堂 隔壁

/*两层循环 maxn minn记录最大值和最小值 */ #include<iostream> #include<cstdio> int const MAXN=1005; using namespace std; int n,m,maxn,minn; int t1[MAXN],t2[MAXN]; bool f1[MAXN],f2[MAXN]; int main() { freopen("neighbor.in","r",stdin); fre

清北学堂 对刚

3 /*同样是模拟 约瑟夫环的问题 */ #include<cstdio> #include<iostream> int const MAXN=100005; using namespace std; struct type { int from,to,q; }k,num[MAXN]; int n,t,cnt; int main () { freopen("resist.in","r",stdin); freopen("resist