• [qbzt寒假]hash


    散列(Hash)

    (hash)函数至少要具有如右性质:快准可拼接

    思想都会,俺就是没实现过

    思想:将一串字符串转化成一个数(k),一般用于判断字符串是否相等

    一般:选择一个(p),选择一个(mod),对一串字符,将其表示为(p)进制数:字符常用(ASCII)

    如:(ykyky) (hash)(y*p^4+k*p^3+y*p^2+k*p+y)

    丁神的神仙模数:(10^9+123) (color{White} { 20000905})

    拼接(hash):两个(hash)拼接,放在左侧的(hash)值乘上(p^{右侧位数})

    求一个区间([l,r])(hash)(记(h_i)表示从开头到(i)的前缀(hash)):(h_r-(h_{l-1})*p^{r-l+1})

    BZOJ 3555 [Ctsc2014]企鹅QQ

    (PenguinQQ)是中国最大、最具影响力的(SNS(Social Networking Services))网站,以实名制为基础,为用户提供日志、群、即时通讯、相册、集市等丰富强大的互联网功能体验,满足用户对社交、资讯、娱乐、交易等多方面的需求。
    (Q)(PenguinQQ)网站的管理员,他最近在进行一项有趣的研究——哪些账户是同一个人注册的。经过长时间的分析,小(Q)发现同一个人注册的账户名称总是很相似的,例如(Penguin1,Penguin2,Penguin3……)于是小(Q)决定先对这种相似的情形进行统计。
    (Q)定义,若两个账户名称是相似的,当且仅当这两个字符串等长且恰好只有一位不同。例如“(Penguin1)”和“(Penguin2)”是相似的,但“(Penguin1)”和“(2Penguin)”不是相似的。而小(Q)想知道,在给定的 个账户名称中,有多少对是相似的。
    为了简化你的工作,小(Q)给你的(N)个字符串长度均等于(L),且只包含大小写字母、数字、下划线以及‘@’共64种字符,而且不存在两个相同的账户名称。

    (N ≤ 30000; L ≤ 200; S ≤ 64)

    求前缀(hash),枚举不同位,利用求区间(hash)的方法求出后半部分,然后拼接(hash),最后比较

    其他(hash)相关:

    (BZOJ) (3942) ([Usaco2015) (Feb]Censoring)

    (BZOJ) (3916) ([Baltic2014]friends)

  • 相关阅读:
    【转】开发人员一定要加入收藏夹的网站
    ASP.NET页面之间传递值的几种方式
    查询数据库中字段内容相同的记录
    将csv文件导入到数据库中
    XMLHttpRequest对象(三)
    Ajax基础(一)
    Ajax浏览器支持(二)
    javascript获取浏览器的
    SQL SERVER 通过链接服务器访问ORACLE 包中的存储过程 带参数
    SQL 添加链接服务器
  • 原文地址:https://www.cnblogs.com/zhuier-xquan/p/12257996.html
Copyright © 2020-2023  润新知