• pku 3349 Snowflake Snow Snowflakes


    http://poj.org/problem?id=3349 题目的意思就是给你一堆雪人的胳膊长,每个雪人都有六个胳膊,他们给出的顺序是按顺时针,或是逆时针给出的,但是六个里以哪个开头是不确定的。如果里面有任何两个相同,则就输出  “Twin snowflakes found.”   否则输出“No two snowflakes are alike.”。一开始我还以为是让找有多少个snowflakes,我想数据那么大,再怎么弄,也是TLE啊。原来是弄错题意了。悲剧。题意弄懂了,可是还是TLE,去看别人的解题报告,真厉害,这也能想到,而且代码一点不复杂,不过感觉还是很慢,3000多MS呢,呵呵,不过思路挺简单的

    思路:就是用一个hash数组标记那些出现过的,是对他们的胳膊求和后在取余进行标记,要不这样会TLE的。然后再任意取两个进行比较,如果相同,则直接返回true,否则继续查找。

    还是看代码吧

     1 #include<stdio.h>
    2 #include<string.h>
    3 #include<iostream>
    4 #include<vector>
    5 using namespace std;
    6 #define N 9997
    7 struct node // 申请一个结构体,用来记录六个胳膊的长度和胳膊长度总和
    8 {
    9 int num;
    10 int s[6];
    11 };
    12 vector<node>v[N]; // 申请一个 node型的向量数组
    13 int find(node a,node b)
    14 {
    15 int i,j;
    16 if(a.num!=b.num) return 0;
    17 for(i=0;i<6;i++)
    18 {
    19 if(a.s[0]==b.s[i])
    20 {
    21 for(j=1;j<6;j++) // 顺时针查找
    22 {
    23 if(a.s[j]!=b.s[(j+i)%6]) break;
    24 }
    25 if(j==6) return 1;
    26 for(j=1;j<6;j++) // 逆时针查找
    27 {
    28 if(a.s[6-j]!=b.s[(i+j)%6]) break;
    29 }
    30 if(j==6) return 1;
    31 }
    32 }
    33 return 0;
    34 }
    35 int juge()
    36 {
    37 int i,j,k;
    38 for(i=0;i<N;i++)
    39 {
    40 for(j=0;j<v[i].size();j++)
    41 {
    42 for(k=j+1;k<v[i].size();k++)
    43 if(find(v[i][j],v[i][k])) return 1; // 如果找到一个就不用再继续找了
    44 }
    45 }
    46 return 0;
    47 }
    48 int main()
    49 {
    50 int j,t;
    51 node k;
    52 cin>>t;
    53 while(t--)
    54 {
    55 k.num=0;
    56 for(j=0;j<6;j++)
    57 {
    58 scanf("%d",&k.s[j]); // 千万不要用cin,用scanf都是勉强挤过的
    59 //cin>>k.s[j];
    60 k.num+=k.s[j]; // 对六个胳膊求和
    61 }
    62 v[k.num%N].push_back(k); // 对和取余进行标记,并把k放入到vector中, 
    63 }
    64 int ans=juge();
    65 if(ans) cout<<"Twin snowflakes found.\n";
    66 else cout<<"No two snowflakes are alike.\n";
    67 return 0;
    68 }


     

  • 相关阅读:
    小小的封装了一个pie的echarts
    recent.css常用的页面初始化样式
    bootstrap表格多样式及代码
    Java内存回收机制
    栈帧
    互斥锁和条件变量
    UML类图的常见关系
    堆栈详解(数据与内存中的存储方式)
    PR消减视频中的鼠标声
    SmartPlant Review 三维视图快捷键
  • 原文地址:https://www.cnblogs.com/fxh19911107/p/2399709.html
Copyright © 2020-2023  润新知