UVA 11186 - Circum Triangle(计算几何+容斥)
来源:互联网 发布:淘宝流量来源 编辑:程序博客网 时间:2024/05/19 10:56
这题用n^2的算法能过,先任意枚举两点,和圆心组成的三角形求面积,这个面积可能会被加(n - 2)次,但是要注意,如果有3点是在同一侧,那么要减去,于是在枚举一遍,每次枚举一个点,然后枚举和这个点度数相差180以内的点,求面积,这个面积要减去2 * (j - i + 1)次
代码:
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int N = 505;const double PI = acos(-1.0);int n;double r, d[N * 2];struct Point { double x, y; Point() {} Point(double x, double y) { this->x = x; this->y = y; }};typedef Point Vector;Vector operator - (Vector A, Vector B) { return Vector(A.x - B.x, A.y - B.y);}inline double Cross(Vector A, Vector B) {return A.x * B.y - A.y * B.x;} //叉积inline double Area2(Point A, Point B, Point C) {return Cross(B - A, C - A);} //有向面积inline double Are(Point A, Point B, Point C) {return fabs(Area2(A, B, C)) / 2;}inline Point getP(double d) { double rad = d / 180 * PI; return Point(cos(rad) * r, sin(rad) * r);}int main() { while (~scanf("%d%lf", &n, &r) && n || r) { for (int i = 0; i < n; i++) scanf("%lf", &d[i]); sort(d, d + n); double ans = 0; for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) ans += Are(Point(0, 0), getP(d[i]), getP(d[j])) * (n - 2); for (int i = 0; i < n; i++) d[i + n] = d[i] + 360; for (int i = 0; i < n; i++) { for (int j = i + 2; d[j] - d[i] < 180; j++) { ans -= 2 * Are(Point(0, 0), getP(d[i]), getP(d[j % n])) * (j - i - 1); } } printf("%.0f\n", ans); } return 0;}
0 0
- UVA 11186 - Circum Triangle(计算几何+容斥)
- uva 11186 - Circum Triangle(几何)
- uva 11186 - Circum Triangle
- Circum Triangle - UVa 11186
- UVA - 11186-Circum Triangle
- UVA 11186(p349)----Circum Triangle
- Circum Triangle - UVa 11186 三角形面积
- Circum Triangle UVA
- UVa 11186 Circum Triangle 圆周上的三角形面积之和
- UVA 11186 - Circum Triangle(圆上三角形求法)
- uva 11437 Triangle Fun (简单计算几何)
- UVA - 11437 - Triangle Fun (计算几何~)
- UVA 11437 - Triangle Fun(计算几何)
- 习题10-39 UVA 11186 Circum Triangle圆周上的三角形
- [计算几何]Pku2079-Triangle
- uva 11123 - Counting Trapizoid(容斥+几何)
- 计算几何专项:UVa 11186
- UVa 11437 Triangle Fun(几何)
- BZOJ 3910 火车 LCA+并查集
- 软考下午题详解---数据流图设计
- CI框架学习之六 ( 数据库查询缓存优化 )
- Shapeways:纽约的3D打印产品定制公司
- pat_1002
- UVA 11186 - Circum Triangle(计算几何+容斥)
- 实验课题目
- Qt 常用命令,宏,pro文件格式
- ObjectC----分类的使用
- c++primer第七章函数7.31
- ASP.net PageAsyncTask 异步任务---待解
- java程序获取jdk版本等信息
- java中传值还是传引用
- 韩岩___第4课___《linux内核分析》MOOC课