• poj1971Parallelogram Counting


    链接

    越来越感觉到了数学的重要性!。。

    这题本来用以斜率和长度为key值进行hash不过感觉很麻烦还TLE了。。

    最后知道中点一样的话就可以组成平行四边形,初中数学就可以了。。

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<vector>
     7 #include<cmath>
     8 #include<queue>
     9 #include<set>
    10 #include<map>
    11 using namespace std;
    12 #define N 1010
    13 #define LL long long
    14 #define INF 0xfffffff
    15 const double eps = 1e-8;
    16 const double pi = acos(-1.0);
    17 const double inf = ~0u>>2;
    18 struct point
    19 {
    20     int x,y;
    21 } p[N],o[N*N];
    22 
    23 bool cmp(point a,point b)
    24 {
    25     if(a.x==b.x) return a.y<b.y;
    26     return a.x<b.x;
    27 }
    28 int main()
    29 {
    30     int t,n,i,j;
    31     cin>>t;
    32     while(t--)
    33     {
    34         scanf("%d",&n);
    35         for(i = 1 ; i <= n ; i++)
    36         {
    37             scanf("%d%d",&p[i].x,&p[i].y);
    38         }
    39         int g = 0;
    40         for(i = 1 ; i<= n ; i++)
    41         {
    42             for(j = i+1 ; j <= n ;j++)
    43             {
    44                 o[++g].x = (p[i].x+p[j].x);
    45                 o[g].y = (p[i].y+p[j].y);
    46                // cout<<o[g].y<<endl;
    47             }
    48         }
    49         LL ans = 0;
    50         sort(o+1,o+g+1,cmp);
    51         int e = 1;
    52         for(i = 2; i <= g ;i++)
    53         {
    54             if(o[i].x-o[i-1].x==0&&o[i].y-o[i-1].y==0)
    55             {
    56                 e++;
    57                // cout<<o[i].x<<" ,"<<o[i-1].x<<" "<<o[i].y<<" "<<o[i-1].y<<endl;
    58             }
    59             else
    60             {
    61                 ans+=(LL)(e-1)*e/2;
    62                 e = 1;
    63             }
    64         }
    65         ans+=(LL)(e-1)*e/2;
    66         cout<<ans<<endl;
    67     }
    68     return 0;
    69 }
    View Code
  • 相关阅读:
    Linux嵌入式 -- 内核
    Linux嵌入式 -- 内核
    utf8和utf8mb4区别
    二叉树的实现
    python资源大全2
    树与树算法
    二叉树
    70.最小生成树
    68.营救问题(广搜)
    67.迷宫问题(广搜)
  • 原文地址:https://www.cnblogs.com/shangyu/p/3855339.html
Copyright © 2020-2023  润新知