zoukankan      html  css  js  c++  java
  • 哈希 poj 2002

    n个点

    求其中有几个正方形

    n<1000

    暴力4个点就不行了

    大概2个点还可以

    根基(x*x+y*y)%素数 hash 一下

    告诉你2个点求 另外2个点 画个图推一下

    重复要/2;

     1 #include<stdio.h>
     2 #include<algorithm>
     3 #include<vector>
     4 
     5 using namespace std;
     6 
     7 #define mod 10007
     8 struct point
     9 {
    10     int x,y;
    11 
    12 }x[1005];
    13 
    14 vector<point>hash[mod];
    15 
    16 void insert(int a)
    17 {
    18     int h=(x[a].x*x[a].x+x[a].y*x[a].y)%mod;
    19     hash[h].push_back(x[a]);    
    20 }
    21 bool cmp(point a,point b)
    22 {
    23     if(a.x==b.x)
    24         return a.y<b.y;
    25     return a.x<b.x;
    26 }
    27 bool search(int a,int b)
    28 {
    29     int h=(a*a+b*b)%mod;
    30     for(int i=0;i<hash[h].size();i++)
    31     {
    32         if(hash[h][i].x==a&&hash[h][i].y==b)
    33         return true;
    34     }
    35     return false;
    36 }
    37 int main()
    38 {
    39     int n;
    40     while(scanf("%d",&n)!=EOF&&n)
    41     {
    42         for(int i=0;i<mod;i++)
    43             hash[i].clear();
    44 
    45         for(int i=1;i<=n;i++)
    46         {
    47             scanf("%d%d",&x[i].x,&x[i].y);
    48             insert(i);        
    49         }
    50         int cnt=0;
    51         sort(x+1,x+n+1,cmp);
    52         for(int i=1;i<=n;i++)
    53         {
    54             for(int j=i+1;j<=n;j++)
    55             {
    56                 int x1,y1,x2,y2;
    57                 x1=x[i].x-(x[j].y-x[i].y);
    58                 y1=x[i].y+(x[j].x-x[i].x);
    59                 x2=x[j].x-(x[j].y-x[i].y);
    60                 y2=x[j].y+(x[j].x-x[i].x);
    61                 if(search(x1,y1)&&search(x2,y2))
    62                     cnt++;
    63                 
    64             }
    65         }
    66         printf("%d
    ",cnt/2);
    67     }
    68 
    69     return 0;
    70 }
  • 相关阅读:
    随笔 祝我快乐
    .NET设计模式单件模式(Singleton Pattern)
    随笔 缘分
    随笔 雨季
    数据库设计中的小经验
    一个字节造成的巨大性能差异——SQL Server存储结构
    随笔 淡淡的幸福
    用LINQ还是NHibernate?
    随笔 风筝
    FreeStyle Wishes
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/6101030.html
Copyright © 2011-2022 走看看