POJ 2194 2850 Stacking Cylinders
2012-07-22 14:52
155 查看
很简单,直接用高中的解析几何知识,将两个与两个圆都想切的圆的圆心求出来就可以了,在加个两重循环找到最上面的点。
#include <stdio.h>
#include <math.h>
#include<algorithm>
using namespace std;
double num[20][20], numy[20][20];
int n;
void getpoint( double x1, double y1, double x2, double y2 , double & x, double & y )
{
double a, b, c, d, e, f;
a= x2-x1;
b= y2-y1;
c= (x1+x2)/2.0;
d= (y1+y2)/2.0;
e= (y1-y2)/2.0;
f= (x1-x2)/2.0;
y=sqrt( (4-e*e-f*f)*a*a/(a*a+b*b) ) + d;
x= ( b*( d-y )/a )+c;
}
int main()
{
int t;
while(scanf("%d", &t) && t)
{
int i, j;
for ( i = 0; i < t ; i++ )
{
scanf("%lf", num[t-1]+i);
numy[t-1][i]=1.0;
}
sort(num[t-1],num[t-1]+t);
for ( j = t-1; j > 0 ; j-- )
{
for ( i = 0; i < t; i++ )
{
getpoint(num[j][i], numy[j][i], num[j][i+1], numy[j][i+1], num[j-1][i], numy[j-1][i]);
}
}
printf("%.4f %.4f\n",num[0][0], numy[0][0]);
}
return 0;
}
#include <stdio.h>
#include <math.h>
#include<algorithm>
using namespace std;
double num[20][20], numy[20][20];
int n;
void getpoint( double x1, double y1, double x2, double y2 , double & x, double & y )
{
double a, b, c, d, e, f;
a= x2-x1;
b= y2-y1;
c= (x1+x2)/2.0;
d= (y1+y2)/2.0;
e= (y1-y2)/2.0;
f= (x1-x2)/2.0;
y=sqrt( (4-e*e-f*f)*a*a/(a*a+b*b) ) + d;
x= ( b*( d-y )/a )+c;
}
int main()
{
int t;
while(scanf("%d", &t) && t)
{
int i, j;
for ( i = 0; i < t ; i++ )
{
scanf("%lf", num[t-1]+i);
numy[t-1][i]=1.0;
}
sort(num[t-1],num[t-1]+t);
for ( j = t-1; j > 0 ; j-- )
{
for ( i = 0; i < t; i++ )
{
getpoint(num[j][i], numy[j][i], num[j][i+1], numy[j][i+1], num[j-1][i], numy[j-1][i]);
}
}
printf("%.4f %.4f\n",num[0][0], numy[0][0]);
}
return 0;
}
相关文章推荐
- POJ 2194/POJ 2850
- zoj 2403 || poj 2194 || poj 2850 Stacking Cylinders
- POJ 2194 2850 计算几何
- POJ 2194 Stacking Cylinders(两圆相切求圆心坐标)
- poj 2194(字符串的DP)
- POJ 2850 Stacking Cylinders 简单计算几何
- POJ - 2194
- poj 2194 Stacking Cylinders 计算几何之向量旋转
- poj 1328
- [POJ_1008]Maya Calendar
- POJ 3299 Humidex
- poj_1258 Agri-Net
- poj 3687 Labeling Balls
- POJ2001 Shortest Prefixes
- POJ 1815 Friendship ★(字典序最小点割集)
- poj 3140 Contestants Division(树形dp? dfs计数+枚举)
- poj-2486-树形dp
- 求最长连续公共子序列 POJ 3080
- poj 3041
- 【POJ】3905 Perfect Election 2-sat