hlg1175小陈老师、桌子、盘子【计算几何】
来源:互联网 发布:centos add user 编辑:程序博客网 时间:2024/05/29 15:16
大意:一个R的桌子能否摆下n个半径为r的盘子 要求所有的盘子靠桌子的边缘放置
分析:
两种思路
一种是看这个桌子放这种盘子最多放多少个
一种是把这种盘子n个放在这个桌子上最少需要多大桌子半径
代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 using namespace std; 6 7 const int maxn = 105; 8 const double PI = 3.14159265358979; 9 10 int eps(double x) {11 if(fabs(x) < 1e-8) return 0;12 if(x < 0) return -1;13 return 1;14 }15 16 int main() {17 int n;18 double R, r;19 while(EOF != scanf("%d %lf %lf",&n, &R, &r) ) {20 if(n == 1) { 21 if(eps(R - r) >= 0) puts("YES");22 else puts("NO");23 } else if(n == 2) {24 if(eps(R - 2 * r) >= 0) puts("YES");25 else puts("NO");26 } else {27 double x = PI / n;28 double y = r / sin(x) + r;29 if(eps(R - y) >= 0) puts("YES");30 else puts("NO");31 }32 }33 return 0;34 }
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 using namespace std; 6 7 const int maxn = 105; 8 const double PI = 3.14159265358979; 9 10 int eps(double x) {11 if(fabs(x) < 1e-8) return 0;12 if(x < 0) return -1;13 return 1;14 }15 16 int main() {17 int n;18 double R, r;19 while(EOF != scanf("%d %lf %lf",&n, &R, &r) ) {20 if(eps(R - 2 * r) >= 0) {21 double x = asin(r / ( R - r ) );22 int y = ( int )(( PI + 1e-8) / x);23 if(y >= n) puts("YES");24 else puts("NO");25 } else if(eps(R - r) >= 0){26 if(n <= 1) puts("YES"); 27 else puts("NO");28 } else {29 puts("NO");30 }31 }32 return 0;33 }
0 0
- hlg1175小陈老师、桌子、盘子【计算几何】
- hlg1175小陈老师、桌子、盘子【计算几何】
- 计算几何小模板
- 计算几何小知识点
- 《计算几何》听课小笔记>
- hrbust1176小陈老师、雪人 map&&priority queue
- 计算几何几何函数库
- 计算几何-几何库
- 计算几何
- 计算几何
- 计算几何
- 计算几何
- 计算几何
- 计算几何
- 计算几何
- 计算几何
- 计算几何
- 计算几何
- HDU 2824 The Euler function【模板题】
- 0302
- 0328
- 0328。
- hlg1216数的划分【地推公式|dfs】
- hlg1175小陈老师、桌子、盘子【计算几何】
- 0330
- hlg1398邮局问题【找中位数】
- 0407
- 各位music
- poj3104Drying【二分】
- hdu1072【bfs可重复走】
- 0409
- hlg1186青蛙过河【dp】