1 条题解

  • 0
    @ 2025-5-29 20:16:37
    
    #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
    上传者