poj3349 Snowflake Snow Snowflakes

2024-06-17 03:48

本文主要是介绍poj3349 Snowflake Snow Snowflakes,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大致题意:

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

 两片雪花相等的条件:

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


大概思路:

用连加求余法求key值(用同余定理简化),链地址法解决冲突

写好左旋转模块和右旋转模块,进行地址冲突之后的比较

边插入边比较,一旦有相同则停止处理,直到全都不同时候,输出没有俩相同的雪花


需要的几个模块

计算key值

顺时针比较

逆时针比较

插入(边插入边比较)




晕晕晕,这道题几乎没有地址冲突, 链地址法不用也可以。

午觉起来后发现我的代码在链地址查找完毕后仍未发现相同key的相同雪花后并没有新建链将这个雪花存进去都能AC,试着把整个链部分都删除掉,还是能AC

#include <iostream>
using namespace std;
#include <cstdlib>
#include <cstdio>
#include <string.h>
struct leafs
{__int64 len[6];
}leaf[100010];
const __int64 prime=999983;
class Hashtable
{public:__int64 len[6];Hashtable* next;Hashtable(){next=0;}
};
Hashtable* hash[prime+1];
__int64 computek(int k)
{__int64 key=0;for(int i=0;i<6;i++){key+=leaf[k].len[i]%prime;}key%=prime;return ++key;
}
bool clock(Hashtable* a,int k)
{int count=0;for(int j=0;j<6;j++){for(int i=0;i<6;i++){if(leaf[k].len[i]!=a->len[(i+j)%6])break;elsecount++;}if(count==6)return true;elsecount=0;}return false;
}
bool cclock(Hashtable* a,int k)
{int count=0;for(int j=0;j<6;j++){for(int i=0;i<6;i++){if(leaf[k].len[i]!=a->len[(11-i-j)%6])break;elsecount++;}if(count==6)return true;elsecount=0;}return false;
}
bool insert(int k)
{__int64 key=computek(k);if(!hash[key]){Hashtable* temp=new Hashtable;for(int i=0;i<6;i++)temp->len[i]=leaf[k].len[i];hash[key]=temp;return false;}else{Hashtable* temp=hash[key];if(clock(temp,k)||cclock(temp,k))return true;else{while(temp->next){temp=temp->next;if(clock(temp,k)||cclock(temp,k))return true;}return false;}}
}
int main()
{memset(leaf,0,sizeof(leaf));memset(hash,0,sizeof(hash));bool issame=false;int n;scanf("%d",&n);for(int i=0;i<n;i++){for(int j=0;j<6;j++)scanf("%d",&leaf[i].len[j]);if(!issame)issame=insert(i);}if(issame)printf("Twin snowflakes found.");elseprintf("No two snowflakes are alike.");return 0;
}


这篇关于poj3349 Snowflake Snow Snowflakes的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068403

相关文章

哈希—— POJ 3349 Snowflake Snow Snowflakes

对应POJ题目:点击打开链接 Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536KTotal Submissions: 33595 Accepted: 8811 Description You may have heard that no two snowflakes are alike. Y

《前端攻城狮 · Snowflake 雪花算法》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍 文章目录 写在前面的话利用现有库自定义实现雪花ID和UUID总结陈词 写在前面的话 雪花 ID 是一种分布式唯一 ID 生成算法,通常由 Twitter 提出的。它的

(白书训练计划)UVa 11572 Unique Snowflakes(窗口滑动法)

题目地址:UVa 11572 这种方法以前接触过,定义两个指针,不断从左向右滑动,判断指针内的是否符合要求。 这个题为了能快速判断是否有这个数,可以用STL中的set。 代码如下: #include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include

90 Realistic Arctic Environment Textures snow(90+种逼真的北极环境纹理--雪、冰及更多)

一组90多个逼真的雪、冰、雪地岩石和其他被雪覆盖的地面纹理,供在雪地环境中使用。每个纹理都是可贴的/无缝的,并且完全兼容各种不同的场景--标准的Unity地形、Unity标准着色器、URP、HDRP等等都兼容。 所有的纹理都是4096x4096,并包括一个HDRP掩码,以完全支持HDRP。 特点。 95种质地 95种材料 95个地形图层 反照率、环境遮蔽、高度、正常、平滑度和HDRP蒙版 40

Twitter的分布式自增ID算法snowflake - C#版

概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没有顺序I

全局唯一ID生成常见的几种方式和twitter/snowflake(雪花算法)解析

全局唯一ID生成常见的几种方式和twitter/snowflake(雪花算法)解析  全局唯一ID生成常见的几种方式: 1,(twitter/snowflake)雪花算法 2,利用数据库的auto_increment特性 3,UUID 4,其他(如redis也有incr,redis加lua脚本实现twitter/snowflake算法)   一、 (twitter/snowflake

(Snowflake Algorithm)雪花算法Java的简单使用

概述 雪花算法(Snowflake Algorithm)最初是由Twitter开源的,用于生成一个64位的长整型数字作为全局唯一的ID。这个算法是用Scala语言编写的,并且在Twitter内部得到了广泛应用。由于其简单、高效和分布式友好的特性,雪花算法后来也被其他很多公司和项目采用,并可能被移植到其他编程语言中实现。 其结构如下: 第一位:未使用,因为二进制中最高位是符号位,正数是0,负数

仅需Llama3 1/17的训练成本,全球最大开源模型Arctic问世:Snowflake携128位专家系统重塑AI未来

在人工智能领域,模型的大小往往与性能成正比,而模型的开放程度则决定了其应用范围和影响力。今天,云计算巨头Snowflake携其AI研究团队,发布了一款名为Arctic的的开源企业级大型语言模型,该模型以128位专家和惊人的4800亿参数,成功刷新了全球最大开源模型的纪录,为AI的未来发展描绘出了一幅崭新的蓝图。 Arctic的诞生,无疑为人工智能领域注入了新的活力。这款由Snowflake精心打

POJ 3349 Snowflake Snow Snowflakes hash

题意:每个雪花有六个角,每个角用一个数字表示。输入n个雪花,若存在两个雪花相等则输出Twin snowflakes found。否则输出No two snowflakes are alike. 题解:hash #include <iostream>#include <cstdlib>using namespace std;#define Prime 14997struct ListNode

Django如何使用snowflake自定义生成主键而不是自动生成主键?

之前ID都是用自增实现的,那现在想用Snowflake算法生成主键,要做什么改动呢? 目录 背景介绍实现方案方案1 - 手动添加主键方案2 - 重写save()方法方案3 - 使用 Django Signals 中的pre_save()方案4 - 仿照models.UUIDField,写一个models.SnowflakeIDField 总结 背景介绍 目前工程框架如下