AcWing - 137 - 雪花雪花雪花 = 哈希

https://www.acwing.com/problem/content/139/

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;

int a[20];
ull ha[20];

ull mod = 1e6 + 7;

unordered_map<ull, vector<vector<int> > > m;

bool check(ull key, vector<int> &vec) {
    auto vi = m.find(key);
    if(vi == m.end())
        return false;
    for(auto v : (vi->second)) {
        bool suc = 1;
        for(int i = 0; i < 7; ++i) {
            if(v[i] != vec[i]) {
                suc = 0;
                break;
            }
        }
        if(suc)
            return true;
    }
    return false;
}

int main() {
#ifdef Yinku
    freopen("Yinku.in", "r", stdin);
#endif // Yinku
    srand(time(0));
    for(int i = 0; i < 12; ++i) {
        ha[i] = rand();
        ha[i] = (ha[i] << 16) | rand();
        ha[i] = (ha[i] << 16) | rand();
        ha[i] = (ha[i] << 16) | rand();
    }
    int n;
    scanf("%d", &n);
    vector<ull> vec;
    vector<int> vv(7);
    while(n--) {
        for(int i = 0; i < 6; ++i) {
            scanf("%d", &a[i]);
            a[i + 6] = a[i];
        }
        vec.clear();
        for(int j = 0; j < 6; ++j) {
            ull cur = 0;
            for(int i = 0; i < 6; ++i) {
                cur += (ha[i] + ((a[i + j] << 32) | a[i + j]));
            }
            vec.push_back(cur);
        }
        reverse(a, a + 12);
        for(int j = 0; j < 6; ++j) {
            ull cur = 0;
            for(int i = 0; i < 6; ++i) {
                cur += (ha[i] + ((a[i + j] << 32) | a[i + j]));
            }
            vec.push_back(cur);
        }
        sort(vec.begin(), vec.end());

        ull key = 0;
        for(int j = 0; j < 12; ++j) {
            key = (key << 4) ^ (ha[j]) ^ (vec[j]);
        }

        sort(a, a + 6);

        vv[0] = 0;
        for(int i = 0; i < 6; ++i) {
            vv[i + 1] = a[i];
            vv[0] += a[i];
        }
        if(check(key, vv)) {
            puts("Twin snowflakes found.");
            return 0;
        }

        m[key].push_back(vv);
    }
    puts("No two snowflakes are alike.");

}

原文地址:https://www.cnblogs.com/Inko/p/11729785.html

时间: 2024-10-15 09:53:58

AcWing - 137 - 雪花雪花雪花 = 哈希的相关文章

前端小练——雪花特效插件

闲来无事,写写Js练练手,今天做了一个简单版的雪花特效背景插件,与大家分享下. 这里给出几个思路步骤及相应代码: 首先,我们要写一个雪花标本并隐藏,这里引入了jquery库,如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>snowy</title> <script type="te

web前端学习笔记---实现雪花飘落的效果

看了javascript网页特效实例大全中的图片飘下的效果实例,觉得值得动手学习下. 就把图片改成雪花图,完成一个雪花飘下的效果. 并且,其中有些内容比较陈旧了,那么就学者改掉吧. 包括: 1.对left和top的操作仅支持IE浏览器,这咋行,必须得支持chrome. 2.控制图片下落的过程还要去检索element,不好吧,那就改成数组维持,直接操作数组中维持的对象,启不更快. 3.向文档中添加元素直接改成通过JS代码创建元素对象的方式. 实现思路: 1.初始化生成10个div,全都采用绝对定位

FocusBI:地产分析&amp;雪花模型

微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末尾点赞[1] 在<租房分析&星型模型>中讲了如何创建一个星型模型的SSAS项目方案,这里我做一个雪花模型案例.雪花模型是在星型模型的基础上进行修改. 雪花模型 雪花模型其实就是把多个表合成一个维度,有减少数据沉余的作用,也易于维护和属性扩展,这里使用地产数据举例, 维度有 房间.楼栋.项目

雪花算法中机器id保证全局唯一

关于分布式id的生成系统, 美团技术团队之前已经有写过一篇相关的文章, 详见 Leaf——美团点评分布式ID生成系统 通常在生产中会用Twitter开源的雪花算法来生成分布式主键 雪花算法中的核心就是机器id和数据中心id, 通常来说数据中心id可以在配置文件中配置, 通常一个服务集群可以共用一个配置文件, 而机器id如果也放在配置文件中维护的话, 每个应用就需要一个独立的配置, 难免也会出现机器id重复的问题 解决方案: 1. 通过启动参数去指定机器id, 但是这种方式也会有出错的可能性 2.

为2020年的第一场雪锦上添花:用 matplotlib 绘制雪花和雪景

一场大雪,覆盖了华北.华东.天地连成一片,城市银装素裹,处处诗情画意.人人兴高采烈.朋友圈被雪景图和调侃路滑摔跤的段子刷屏,气氛比过年还要热烈几分.我也来凑个热闹,用python为2020年的第一场雪锦上添花. 绘制雪花图案,网上有很多文章介绍,但几乎都是用 Python 的内置模块 turtle 绘制的,这个模块适合用来引导孩子学习编程,很难真正用在项目开发上.也有用 pygame 实现的,不过 pygame 追求的是动画效果,雪花图案是随机生成的圆,效果很一般. 用 matplotlib分析

POJ 3349 - Snowflake Snow Snowflakes - [hash]

题目链接:http://poj.org/problem?id=3349 Time Limit: 4000MS Memory Limit: 65536K 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 program will read information

poj3349 散列表(hash)

就是散列表的应用,把每片哈希值相同的雪花排到一条链上去即可,每片雪花x的哈希值 hash(x)=sum(x的六角)+mul(x的六角),会爆int #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 100005 #define mod 99991 using namespace std; struct Edge{ int snow[6]

数据仓库中的几种模型

数据仓库中常见的模型有:范式建模,雪花模型,星型建模,事实星座模型. 星型模型 星型模型是数据集市维度建模中推荐的建模方法.星型模型是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样.星型模型的特点是数据组织直观,执行效率高.因为在数据集市的建设过程中,数据经过了预处理,比如按照维度进行了汇总,排序等等,数据量减少,执行的效率就比较高. 雪花模型 雪花模型也是维度建模中的一种选择.雪花模型的维度表可以拥有其他维度表的,虽然这种模型相比星型模型更规范一些,但是由于这种模型不太容易理解,维

第二章:数据仓库与数据集市建模

前言 数据仓库建模包含了几种数据建模技术,除了之前在数据库系列文章中介绍过的ER建模和关系建模,还包括专门针对数据仓库的维度建模技术. 本文将详细介绍数据仓库维度建模技术,并重点讨论三种基于ER建模/关系建模/维度建模的数据仓库总体建模体系:规范化数据仓库,维度建模数据仓库,以及独立数据集市. 维度建模的基本概念 维度建模(dimensional modeling)是专门用于分析型数据库.数据仓库.数据集市建模的方法. 它本身属于一种关系建模方法,但和之前在操作型数据库中介绍的关系建模方法相比增