牛吃草(二分)
来源:互联网 发布:域名注册 godaddy 编辑:程序博客网 时间:2024/04/30 15:21
题目链接:点击打开链接
代码:
#include<stdio.h>#include<math.h>#define pi acos(-1.0)#define inf 10000000struct circle{ double x,y; double r;} c1,c2;double get_juli(double x1,double y1,double x2,double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}double get_mianji(circle c1,circle c2){ double dis=get_juli(c1.x,c1.y,c2.x,c2.y); if(dis>=c1.r+c2.r) return 0; double min_r=c1.r<c2.r?c1.r:c2.r; double max_r=c1.r>c2.r?c1.r:c2.r; if(min_r+dis<=max_r) return pi*min_r*min_r; double a=acos((c1.r*c1.r+dis*dis-c2.r*c2.r)/2/c1.r/dis); double b=acos((c2.r*c2.r+dis*dis-c1.r*c1.r)/2/c2.r/dis); double area1=a*c1.r*c1.r; double area2=b*c2.r*c2.r; double ans=area1+area2; double area_que=sin(a)*c1.r*dis; ans-=area_que; return ans;}int main(){ int q; scanf("%d",&q); while(q--) {// double x0,y0,x1,y1,r; scanf("%lf%lf%lf%lf%lf",&c1.x,&c1.y,&c2.x,&c2.y,&c1.r); double mianji=pi*c1.r*c1.r/2.0; double l=0,r=inf,mid; while(r-l>=1e-9) { mid=(r+l)/2.0; c2.r=mid; if(get_mianji( c1, c2)>=mianji) r=mid; else l=mid; } printf("%.4lf\n",r); }}time:16ms, memory:980kb;
0 0
- 牛吃草(二分)
- zstu 4243 牛吃草(浮点数二分)
- 牛吃草问题
- 牛吃草问题
- 牛吃草问题
- 牛吃草问题
- 牛吃草 数论
- zstuoj 4243 牛吃草
- zstuoj 4243 牛吃草
- 牛吃草问题 (牛顿问题)
- 牛吃草问题的实例
- 【浙江理工大学2016年新生赛暨全国新生邀请赛】 F 牛吃草,ZSTUOJ4243 【计算几何+二分】
- 小学六年级奥数竞赛题:牛吃草问题
- [JZOJ5427]吃草
- zstu 4243牛吃草(2016年新生赛暨全国新生邀请赛)
- 狼行千里吃肉,马行千里吃草(我读了5遍,震撼了!)
- 吃草公司框架(Ofbiz框架的二次开发)的增删查改功能总结
- bzoj 1694 && 1742: [Usaco2005 nov]Grazing on the Run 边跑边吃草(DP)
- redis基础学习总结
- ipad和iPhone尺寸和分辨率,点
- android6.0以上权限动态请求实现
- 利用委托绑定事件
- Unable to start activity ComponentInfo 解决方法
- 牛吃草(二分)
- HttpClient的简单使用
- 微信开源PhxSQL:高可用、强一致的MySQL集群
- 带头部(headView)和底部(footView)的RecycleView
- 公司度过
- windows/mfc 隐藏窗口接受消息的问题
- sicily-1930.排序
- 打印各个字符出现频度的直方图
- css小结