• poj 3349


    大致题意:

    在n (n<100000)个雪花中判断是否存在两片完全相同的雪花,每片雪花有6个角,每个角的长度限制为1000000

    两片雪花相等的条件:

    雪花6个角的长度按顺序相等(这个顺序即可以是顺时针的也可以是逆时针的)

     1 //哈希函数
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<stdlib.h>
     5 #include<algorithm>
     6 const int INF=1000007;
     7 int flag,t;
     8 int hash[INF];
     9 
    10 int s[INF][6];
    11 int st[INF][6];
    12 int next[INF];
    13 int hah(int st[])
    14 {
    15     long long u=0;
    16     for(int i=0;i<6;i++)
    17         u=u*10+st[i];
    18     return u%INF;
    19 }
    20 int try_cmp(int s)
    21 {
    22     int h=hah(st[s]);
    23     for(int i=hash[h];i!=-1;i=next[i])
    24     {
    25         if(memcmp(st[i],st[s],sizeof(st[s]))==0)//比较是否被标记,若是,返回0;
    26           return 0;
    27     }
    28     next[s]=hash[h];
    29     hash[h]=s;
    30     return 1;
    31 
    32 }
    33 void sow()
    34 {
    35 
    36        for(int i=0;i<6;i++)
    37            scanf("%d",&s[0][i]);//输入第一组数据,不许对比
    38        std::sort(s[0],s[0]+6);
    39        memcpy(st[0],s[0],sizeof(s[0]));
    40        try_cmp(0);
    41    for(int j=1;j<t;j++)//从输入第二组数据开始,检验是否在数组中有标记,若有,则发现相同雪花,否则,将其标记
    42    {
    43        for(int i=0;i<6;i++)
    44            scanf("%d",&s[j][i]);
    45        std::sort(s[j],s[j]+6);
    46        memcpy(st[ j],s[j],sizeof(s[j]));
    47        if(!try_cmp(j))
    48          flag=1;
    49    }
    50    if(flag)
    51      printf("Twin snowflakes found.
    ");
    52    else printf("No two snowflakes are alike.
    ");
    53 }
    54 int main()
    55 {
    56      while(~scanf("%d",&t))
    57      {
    58          flag=0;
    59          memset(hash,-1,sizeof(hash));
    60          sow();
    61      }
    62      return 0;
    63 }
    View Code
  • 相关阅读:
    Model
    暑假集训-计算几何
    暑假集训-字符串
    将博客搬至CSDN
    codeforces #519 A A. Multiplication Table (暴力)
    bc #54 A problem of sorting
    vimrc备份
    codeforces # 317 div 2 B. Order Book(模拟)
    codeforces #317 div2 A. Arrays (水)
    bc #52 div 2 A ||hdoj5417 Victor and Machine (模拟)
  • 原文地址:https://www.cnblogs.com/mafangfang/p/3277713.html
Copyright © 2020-2023  润新知