概述
极坐标排序+叉积判断夹角
View Code
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define maxn 200 #define eps 1.0e-8 struct Point { int x, y; }s, point[maxn]; double r; int n; bool operator < (const Point &a, const Point &b) { return atan2((double)a.x, (double)a.y) < atan2((double)b.x, (double)b.y); } void input() { int cnt = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d%d", &point[cnt].x, &point[cnt].y); point[cnt].x -= s.x; point[cnt].y -= s.y; if (r * r > point[cnt].x * point[cnt].x + point[cnt].y * point[cnt].y - eps) cnt++; } n = cnt; } double xmulti(Point a, Point b) { return a.x * b.y - a.y * b.x; } bool within(Point a, Point b) { return xmulti(b, a) > -eps; } int work() { int r = 0; int ans = 0; for (int i = 0; i < n; i++) { while (r - i < n && within(point[i], point[r % n])) r++; ans = max(ans, r - i); } return ans; } int main() { //freopen("t.txt", "r", stdin); while (scanf("%d%d%lf", &s.x, &s.y, &r), r >= 0) { input(); sort(point, point + n); printf("%dn", work()); } return 0; }
最后
以上就是清秀河马为你收集整理的poj1106的全部内容,希望文章能够帮你解决poj1106所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复