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个花瓣(花瓣具有一定的长度),问是否存在两个相同的雪花.若两个雪花以某个花瓣为起点顺时针或逆时针各花瓣长度依次相同,则认为两花瓣相 ...
随机推荐
- Thinkphp 使用gmail发送邮件
1.Thinkphp 发送邮件内容来自:http://www.thinkphp.cn/code/32.html /** * 系统邮件发送函数 * @param string $to 接收邮件者邮箱 * ...
- dedecms 知识点总结
生成-更新主页html 将自定义字段在arclist调用: 内容模型管理==>频道模型管理==>增加新字段==>列表处理: 使字段可以在列表的底层模板中获得(自定义字段默认仅能 ...
- Apache Shiro 使用手册
http://kdboy.iteye.com/blog/1154644 (一)Shiro架构介绍 一.什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加 ...
- javascript 正则 验证 第25节
<html> <head> <title>Form对象</title> <script type="text/javascript&qu ...
- 06_XML的写入_dom4j添加、删除、修改Xml文件内容
[工程截图] [person.xml]准备一个xml文件 <?xml version="1.0" encoding="UTF-8"?> <st ...
- QT5新手上路(2)发布exe文件
QT编程教程在网上有很多,但写完代码以后如何打包成可执行exe文件却少有提及,本文主要介绍这一部分:1.首先确认自己建的工程在debug模式下运行无误.2.在release模式下运行一遍.(如何更改成 ...
- OpenJudge/Poj 1915 Knight Moves
1.链接地址: http://bailian.openjudge.cn/practice/1915 http://poj.org/problem?id=1915 2.题目: 总Time Limit: ...
- OpenJudge / Poj 1928 The Peanuts C++
链接地址:http://bailian.openjudge.cn/practice/1928 题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 Mr. Robinson and h ...
- Spring.Net AOP实例
Spring.Net和Log4net.NUnit.NHibernate一样,也是先从Java中流行开来,然后移植到了.NET当中,形成了.NET版的Spring框架.其官方网站为:http://www ...
- asp.net+MVC--1
1.MVC入门 1)第一个路由: /*任何应用程序启动时发生的动作都应该存在于单独的类中,并且仅在该方法中按照正确顺序调用*/ protected void Application_St ...