POJ 2194 2850 计算几何
题意:
给你了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);
}
}
POJ 2194 2850 计算几何的更多相关文章
- POJ 1410 Intersection (计算几何)
题目链接:POJ 1410 Description You are to write a program that has to decide whether a given line segment ...
- POJ 1106 Transmitters(计算几何)
题目链接 切计算几何,感觉计算几何的算法还不熟.此题,枚举线段和圆点的直线,平分一个圆 #include <iostream> #include <cstring> #incl ...
- poj 2507Crossed ladders <计算几何>
链接:http://poj.org/problem?id=2507 题意:哪个直角三角形,一直角边重合, 斜边分别为 X, Y, 两斜边交点高为 C , 求重合的直角边长度~ 思路: 设两个三角形不重 ...
- TOYS - POJ 2318(计算几何,叉积判断)
题目大意:给你一个矩形的左上角和右下角的坐标,然后这个矩形有 N 个隔板分割成 N+1 个区域,下面有 M 组坐标,求出来每个区域包含的坐标数. 分析:做的第一道计算几何题目....使用叉积判断方 ...
- POJ 1654 Area 计算几何
#include<stdio.h> #include<string.h> #include<iostream> #include<math.h> usi ...
- A - TOYS(POJ - 2318) 计算几何的一道基础题
Calculate the number of toys that land in each bin of a partitioned toy box. 计算每一个玩具箱里面玩具的数量 Mom and ...
- POJ 2254 Globetrotter (计算几何 - 球面最短距离)
题目链接:POJ 2254 Description As a member of an ACM programming team you'll soon find yourself always tr ...
- poj 2318 TOYS(计算几何 点与线段的关系)
TOYS Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12015 Accepted: 5792 Description ...
- POJ 3304 Segments(计算几何)
意甲冠军:给出的一些段的.问:能否找到一条直线,通过所有的行 思维:假设一条直线的存在,所以必须有该过两点的线,然后列举两点,然后推断是否存在与所有的行的交点可以是 代码: #include < ...
随机推荐
- SQL SERVER 2012 第三章 T-SQL 基本SELECT语句用法,Where子句详细用法
select [all|distinct] [top (<expression>) [Percent] [with ties]] <column list> [from < ...
- html5 编辑
在html中想获得矢量图形可以用svg标签.该标签画出的图形全部用代码实现. 可以用在线html编辑工具来进行所见即所得编辑,然后到处源码. 比较好用的工具有http://editor.method. ...
- 在Windows下搭建RocketMQ
原文:http://blog.csdn.net/u014134180/article/details/51790988 目录 目录 一 准备工作 1 RocketMQ部署架构1 2 环境配置 二 安装 ...
- [无线路由] “免费”斐讯K2路由器刷OpenWRT(实战MWAN多宽带网速叠加)
(阿财首发于什么值得买)斐讯K2可以算是一个非常另类的跨界数码产品,其产品完全的醉翁之意不在酒.最多值99元的 MT7260硬件架构和用料,售价399元,金额激活K码后自动转入合作理财P2P平台,等待 ...
- JAVA 小程序之ATM
一个JAVA的小程序,主要要求有模块化编程的思想,能够把ATM中各个功能独立成为一个一个的方法. ATM主要功能有: 查询余额: 取款: 存款: 修改密码: 退出. 以上功能均由独立的方法给出,具体实 ...
- HDU 4923 Room and Moor(瞎搞题)
瞎搞题啊.找出1 1 0 0这样的序列,然后存起来,这样的情况下最好的选择是1的个数除以这段的总和. 然后从前向后扫一遍.变扫边进行合并.每次合并.合并的是他的前驱.这样到最后从t-1找出的那条链就是 ...
- 通讯编程入门--WEBSOCKET
C#通讯编程入门--WEBSOCKET WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System ...
- java并发编程之Semaphore
信号量(Semaphore).有时被称为信号灯.是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们可以正确.合理的使用公共资源. 一个计数信号量.从概念上讲,信号量维护了一个许可集.如 ...
- POJ 1651 Multiplication Puzzle 区间dp(水
题目链接:id=1651">点击打开链 题意: 给定一个数组,每次能够选择内部的一个数 i 消除,获得的价值就是 a[i-1] * a[i] * a[i+1] 问最小价值 思路: dp ...
- C++ 代码片段(积累)
1.MFC中点出对话框显示另存为的一个路径和文件: void CPatchDlg::OnBnClickedBtnPath() { //一下为选择另存为一个路径 m_strSavepath = &quo ...