题意:

给你了n个圆,让你摞起来,问顶层圆心的坐标

(数据保证间隔两层的圆不会挨着)

思路:

按照题意模拟。

假设我们已经知道了一层两个相邻圆的坐标a:(x1,y1)和b:(x2,y2)

很容易求出来边长是2,2,dis(a,b)的三角形的面积

进而求出来底面所对应的高

找到底面中点

讲a->b 向量旋转90度  乘上高度

就搞出来了坐标

//By SiriusRen
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
int cases,n;
typedef double db;
struct P{db x,y;P(){}P(db X,db Y){x=X,y=Y;}}p[][];
bool operator<(P a,P b){return a.x<b.x;}
P operator-(P a,P b){return P(a.x-b.x,a.y-b.y);}
P operator+(P a,P b){return P(a.x+b.x,a.y+b.y);}
db dis(P a){return sqrt(a.x*a.x+a.y*a.y);}
P get(P a,P b){
P c=b-a;db d=dis(c),p=d/+,S=sqrt(p*(p-)*(p-)*(p-d)),h=S/d*;
c.x/=d,c.y/=d;c=P(-c.y*h,c.x*h);
return P((a.x+b.x)/+c.x,(a.y+b.y)/+c.y);
}
int main(){
while(scanf("%d",&n)&&n){
for(int i=;i<=n;i++)scanf("%lf",&p[n][i].x),p[n][i].y=;
sort(p[n]+,p[n]++n);
for(int i=n-;i;i--)
for(int j=;j<=i;j++)
p[i][j]=get(p[i+][j],p[i+][j+]);
printf("%.4lf %.4lf\n",p[][].x,p[][].y);
}
}

最新文章

  1. hdu 5534 (完全背包) Partial Tree
  2. 使用Spring注解来简化ssh框架的代码编写
  3. python 环境安装
  4. HDU 1176 免费馅饼
  5. Drainage Ditches
  6. 希赛网 &gt; 问答 &gt; 数据库 &gt; MySQL数据库 &gt; MySQL的管理与维护 &gt; MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO&#39;root&#39;@&#39;%&#39;I MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO&#39;root&#39;@&#39;%&#39;I
  7. 【和我一起学python吧】初学Python,版本如何选择?
  8. UITableView实现格瓦拉飞天投票模块-b
  9. 《算法:C语言实现》阅读笔记
  10. 《Intel汇编第5版》 数组求和
  11. hdu2571 命运 简单DP
  12. SNMP相关的RFC建议和链接
  13. 学习笔记_J2EE_Spring(一)_入门
  14. MySQL安装脚本0104-亲试ok
  15. ubuntu10.04 搭建海思开发环境
  16. extJS 动态引用加载(转)
  17. An enumerable sequence of parameters (arrays, lists, etc) is not allo
  18. JAVA代码中最常见到的关键字表
  19. Ubuntu下从外网上北邮人BT
  20. 有关于mfc webbrowser插件的使用

热门文章

  1. 【HDOJ4322】Candy(费用流)
  2. 在子线程中更新UI,只能使用Handler
  3. 关于变量__name__的理解
  4. Ubuntu 16.04安装WebStorm
  5. JSP中操作Java Beans
  6. hadoop2.2集群搭建问题只能启动一个datanode问题
  7. 当遇到Mac的Excel或者Word老是重复崩溃的时候
  8. 【结果发布】第六届SeedCoder编程大赛初赛结果发布
  9. DEV Express控件VScorllBar控件使用
  10. WebSphere报错指南