1 条题解
-
0
#include <iostream> #include <cstdio> #include <cstring> #include <stdlib.h> #include <algorithm> #include <queue> #include <map> #include <cmath> #define inf 0x3f3f3f3f #define N 201 #define eps 1e-6 #define PI acos(-1.0) using namespace std; struct Point { double x, y; } p[N]; double a[N*N]; int n; double FindSlewRate(Point p1, Point p2) { Point p; p.x = p2.x - p1.x; p.y = p2.y - p1.y; if(abs(p.x) < eps) return PI / 2; //斜率不存在 double tmp = atan(p.y / p.x); if(tmp < 0) return PI + tmp; return tmp; } int cmp(const void *c, const void *d) { return *(double *)c > *(double *)d ? 1 : -1; } int main() { while(~scanf("%d", &n)) { for(int i = 0; i < n; i++) { scanf("%lf%lf", &p[i].x, &p[i].y); } int rt = 0; for(int i = 0; i < n; i++) { for(int j = i+1; j < n; j++) { a[rt++] = FindSlewRate(p[i], p[j]); } } qsort(a,rt,sizeof(a[0]),cmp); int ans = 1; for(int i = 1; i < rt; i++) { if(a[i] != a[i-1]) ans++; } printf("%d\n", ans); } return 0;
- 1
信息
- ID
- 2669
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者