[poj3349]Snowflake Snow Snowflakes_hash】的更多相关文章

Snowflake Snow Snowflakes poj-3349 题目大意:给出n片雪花,每片雪花有6个角,每个角有一个权值.如果两片雪花中能够各选出一个点,使得从该点顺时针或者逆时针转,得到的权值序列完全相符,那么我们就说这两片雪花是完全相同的. 注释:$1\le n\le 10^5$. 想法:其实并不是一道真正意义上的hash.我们对每个雪花进行处理:如果两个雪花a,b,满足: $\sum\limits_{i=1}^{6} a_i+\prod\limits_{i=1}^{6}a_i$相等…
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 37615 Accepted: 9882 Description You may have heard that no two snowflakes are alike. Your task is to write a program to determine whether this is really true. Your…
链接:Snowflake Snow Snowflakes 判断所有的雪花里面有没有相同的 每次把雪花每个角的值进行相加和相乘 之后hash #include<iostream> #include<algorithm> #include<cstring> #include<stdio.h> using namespace std; typedef long long LL; ; ,p=; ],head[maxn],nex[maxn]; int he(int *…
Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 49991   Accepted: 13040 Description You may have heard that no two snowflakes are alike. Your task is to write a program to determine whether this is really true.…
Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 48624   Accepted: 12697 Description You may have heard that no two snowflakes are alike. Your task is to write a program to determine whether this is really true.…
题目链接: https://vjudge.net/problem/POJ-3349 题目大意: 每个雪花都有六个分支,用六个整数代表,这六个整数是从任意一个分支开始,朝顺时针或逆时针方向遍历得到的.输入多个雪花,判断是否有形状一致的雪花存在. 比如输入的是1 2 3 4 5 6, 则2 3 4 5 6 1,3 4  5 6 1 2,……,6 5 4 3 2 1,5 4 3 2 1 6等都是相同形状的. 解题思路: 这里用到了最小表示法的思想,将输入的6个数字依次顺推和逆推,求出最小表示法(可以理…
吼哇! 关于开散列哈希: 哈希就是把xxx对应到一个数字的东西,可以理解成一个map<xxx, int>(是不是比喻反了) 我们要设计一个函数,这个函数要确保同一个东西能得到相同的函数值(废话) 然后在函数值域上开邻接表即可. 本人第一次写hash,还不是经典字符串hash而是雪花雪雪花(......) 那么接下来欣赏丑陋不堪的hash吧! (poj上C++过不了,RE,G++就过了,有剧毒) #include <cstdio> , P = ; ]; struct Snowflak…
首先声明代码并没有AC,内存超了 但我对此无能为力,有没有哪位大神好心教一下怎么写 哈希,然后比较花瓣数组,这些应该都没问题才对..唉.. 贴MLE代码 import java.util.*; public class POJ3349 { static int N = 1200007; public static class HashNode{ int[] num=null; HashNode next = null; } // hashlist[i]存储hash值为i的链表 static Ha…
题目链接:http://poj.org/problem?id=3349 题意:雪花有6个瓣,有n个雪花,输入每个雪花的瓣长,判断是否有一模一样的雪花(通过旋转或翻转最终一样,即瓣长对应相等).如果前面的雪花判断出有重复,则不需对后续的进行操作. 题解:直接将花瓣存在二维数组里面,然后每次新输入一个,再对之前的进行遍历判重.但是这种做法很低效,遍历花了很多时间.所以用哈希表,可直接访问是否存在重复,如果不重复,则用一维数组将雪花存起来(数组包含在结构体里),并将其"挂"在相应的哈希值(k…
考察hash表: 每一个雪花都有各自的6个arm值,如果两个雪花从相同或者不同位置开始顺时针数或者逆时针数可以匹配上,那么这两个雪花就是相等的. 我们采用hash的方法,这样每次查询用时为O(1),总用时为O(n). hash的本质是把值映射到地址或者下标,如果不同的key值对应到相同的indice上的话,就需要进行chaining处理,吧indice指向一个链表,链表的每一个节点存储共享同一indice的不同key值. 因此问题的核心变成:吧相等的雪花映射到相同的indice上.这里雪花是一个…