POJ 3349 Snowflake Snow Snowflakes(哈希)
http://poj.org/problem?id=3349
题意 :分别给你n片雪花的六个角的长度,让你比较一下这n个雪花有没有相同的。
思路:一开始以为把每一个雪花的六个角的长度sort一下,然后再跟别的比,可实际上不是这样的,两个雪花相同的时候,角的顺序是固定的,可以是逆时针的也可以是顺时针的,因为雪花可以转动嘛,例如213456 和216543就是不一样的,这个题本身分类就是哈希,但是看到讨论里有人用暴力过的,,,我很是佩服,我压根就没往那个方面想,也许分类是哈希,我就认定哈希了吧,思维太固定了。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector> using namespace std;
const int maxx = ;
int snow[maxx][] ;
const int len = ;
vector <int >hash[len] ; bool judge(int a, int b)
{
for(int i = ; i < ; i++)
{
if( (snow[a][] == snow[b][i] && snow[a][] == snow[b][(i+)%] && snow[a][] == snow[b][(i+)%] && snow[a][] == snow[b][(i+)%] &&
snow[a][] == snow[b][(i+)%] && snow[a][] == snow[b][(i+)%]) ||
(snow[a][] == snow[b][i] && snow[a][] == snow[b][(i+)%] && snow[a][] == snow[b][(i+)%] && snow[a][] == snow[b][(i+)%] &&
snow[a][] == snow[b][(i+)%] && snow[a][] == snow[b][(i+)%] ) )
return true;
}
return false;
} int main()
{
int n ;
scanf("%d",&n) ;
for(int i = ; i < n ; i++)
{
for(int j = ; j < ; j++)
scanf("%d",&snow[i][j]) ;
}
int sum, key ;
for(int i = ; i < n ; i++)
{
sum = ;
for(int j = ; j < ; j++)
{
sum += snow[i][j] ;
}
key = sum % len ;
for(vector<int>::size_type j = ; j < hash[key].size(); j++)
{
if(judge(hash[key][j], i))
{
printf("Twin snowflakes found.\n");
return ;
}
}
hash[key].push_back(i);
}
printf("%s\n", "No two snowflakes are alike.");
return ;
}
POJ 3349 Snowflake Snow Snowflakes(哈希)的更多相关文章
- 哈希—— POJ 3349 Snowflake Snow Snowflakes
相应POJ题目:点击打开链接 Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions ...
- POJ 3349 Snowflake Snow Snowflakes(简单哈希)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 39324 Accep ...
- poj 3349:Snowflake Snow Snowflakes(哈希查找,求和取余法+拉链法)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 30529 Accep ...
- [ACM] POJ 3349 Snowflake Snow Snowflakes(哈希查找,链式解决冲突)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 30512 Accep ...
- POJ 3349 Snowflake Snow Snowflakes
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27598 Accepted: ...
- POJ 3349 Snowflake Snow Snowflakes (Hash)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 48646 Accep ...
- POJ 3349 Snowflake Snow Snowflakes (哈希表)
题意:每片雪花有六瓣,给出n片雪花,六瓣花瓣的长度按顺时针或逆时针给出,判断其中有没有相同的雪花(六瓣花瓣的长度相同) 思路:如果直接遍历会超时,我试过.这里要用哈希表,哈希表的关键码key用六瓣花瓣 ...
- POJ 3349 Snowflake Snow Snowflakes(哈希表)
题意:判断有没有两朵相同的雪花.每朵雪花有六瓣,比较花瓣长度的方法看是否是一样的,如果对应的arms有相同的长度说明是一样的.给出n朵,只要有两朵是一样的就输出有Twin snowflakes fou ...
- POJ - 3349 Snowflake Snow Snowflakes (哈希)
题意:给定n(0 < n ≤ 100000)个雪花,每个雪花有6个花瓣(花瓣具有一定的长度),问是否存在两个相同的雪花.若两个雪花以某个花瓣为起点顺时针或逆时针各花瓣长度依次相同,则认为两花瓣相 ...
随机推荐
- ruby sass Encoding::CompatibilityError for changes
在'compass create projectName','cd projectName'之后,show "Encoding::CompatibilityError on line [&q ...
- s15day12作业:MySQL练习题参考答案
MySQL练习题参考答案 导出现有数据库数据: mysqldump -u用户名 -p密码 数据库名称 >导出文件路径 # 结构+数据 mysqldump -u用户名 -p ...
- asp发布至IIS
最近做的一个任务是使用asp写的,显示的是数据库的报表,但是将报表当前目录发布至IIS后,发现还是运行不了 Set conn = Server.CreateObject("ADODB.Con ...
- 使用blktrace排查iowait cpu高的问题
本文转自这里,blktrace在这种情况下的使用方法值得借鉴学习. ------------------------------------------------------------------ ...
- scala学习笔记:理解并行集合par
scala> (1 to 5).foreach(println(_)) 1 2 3 4 5 scala> (1 to 5).par.foreach(println(_)) 3 1 4 2 ...
- 利用html模板生成Word文件(服务器端不需要安装Word)
利用html模板生成Word文件(服务器端不需要安装Word) 由于管理的原因,不能在服务器上安装Office相关组件,所以只能采用客户端读取Html模板,后台对模板中标记的字段数据替换并返回给客户端 ...
- web app开发中 iPhone、iPad默认按钮样式问题
webapp开发过程中,用html5+css3很方便,而且可以很方便的编译到Android ios等不同平台,但是ios需要单独处理一下,不然会出现一些想象不到的问题.下面就介绍一下各种问题的解决方法 ...
- 【JAVA】抽象类
一.什么是抽象类 用abstract修饰的类就是抽象类.抽象类中可以有用abstract修饰的抽象方法,也可以没有抽象方法. 二.为什么要设计抽象类 在某些情况下,某个父类只是知道其子类应该包含怎样的 ...
- (转)TCP注册端口号大全
分类: 网络与安全 cisco-sccp 2000/tcp Cisco SCCPcisco-sccp 2000/udp Cisco SCCp# Dan Wing <dwing&cisco ...
- 02_HttpClient_Get请求
[实例1. GET请求百度(乱码)] /** * Http GET请求百度,但是返回乱码 */ public static void main(String[] args) throws Except ...