Description

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

Input

第一行包含三个正整数 , , 。其中 表示账户名称数量, 表示账户名称长度, 用来表示字符集规模大小,它的值只可能为2或64。
若等于2,账户名称中只包含字符‘0’和‘1’共2种字符;
若 等于64,账户名称中可能包含大小写字母、数字、下划线以及‘@’共64种字符。
随后 行,每行一个长度为 的字符串,用来描述一个账户名称。数据保证 个字符串是两两不同的。

Output

仅一行一个正整数,表示共有多少对相似的账户名称。

Sample Input

4 3 64

Fax

fax

max

mac

Sample Output

4

HINT

4对相似的字符串分别为:Fax与fax,Fax与max,fax与max,max与mac。N<=30000,L<=200,S<=64

这题据说标解不是哈希……不过用哈希就可以水过啊!
先求出每个串的哈希值,然后暴力枚举每一位,判断除去这一位的哈希值是否相同。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
typedef unsigned long long ULL;
const int p = 2333;char s[30010][550];
ULL hash[50000], py[500], ls[50000];int main()
{int len, n, si;scanf("%d%d%d", &n, &len, &si);py[0] = 1;for(int i = 1; i <= 210; i++)py[i] = py[i - 1] * p;for(int i = 1; i <= n; i++)scanf("%s", s[i] + 1);for(int i = 1; i <= n; i++)for(int j = 1; j <= len; j++)hash[i] = hash[i] * p + s[i][j];int pr = 1, ans = 0;for(int i = 1; i <= len; i++){for(int j = 1; j <= n; j++)ls[j] = hash[j] - s[j][i] * py[len - i];sort(ls + 1, ls + n + 1);for(int j = 2; j <= n; j++){if(ls[j] == ls[j - 1]){ans += pr;pr ++;}elsepr = 1;}}printf("%d", ans);return 0;
}

转载于:https://www.cnblogs.com/Loi-Vampire/p/6017050.html

BZOJ 3555 [CTSC2014] 企鹅QQ Hash相关推荐

  1. 【BZOJ3555】[Ctsc2014]企鹅QQ hash

    [BZOJ3555][Ctsc2014]企鹅QQ Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础, ...

  2. luoguP4503 [CTSC2014]企鹅QQ hash

    既然只有一位的不同,那么我们可以枚举这一位.... 我们只需要快速地计算去掉某一位的$hash$值.... 由于$hash(S) = \sum s[i] * seed^i$,因此去掉第$i$位的权值只 ...

  3. 3555: [Ctsc2014]企鹅QQ

    先Hash一下. 删掉某一位,重新Hash,然后排序,扫一遍就好了. 感觉人品用光了,数组大小205打成25,WA了4次. #include<iostream> #include<c ...

  4. [Ctsc2014]企鹅QQ

    3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec  Memory Limit: 256 MB [Submit][Status][Discuss] Description ...

  5. 洛谷 P4503 [CTSC2014]企鹅QQ 解题报告

    P4503 [CTSC2014]企鹅QQ 题目背景 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即 ...

  6. 【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希

    传送门 题目分析 题意即求有多少对字符串只相差一个字符,枚举删除每个字符后的哈希, 看有多少相等即可. 比如有如下字符串:$Sd123$,其中S部分的哈希值为H,删除的是d,则原字符串的哈希值为$$( ...

  7. 【bzoj3555】[Ctsc2014]企鹅QQ

    题目描述: PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大的互联网功能 ...

  8. BZOJ3555: [Ctsc2014]企鹅QQ

    [传送门:BZOJ3555] 简要题意: 给出n个字符串长度为m,给出字符串的字符种数,求出相似的字符串个数 相似字符串的定义为:相同位置上两个字符串有且只有一个字符不相同时,两个字符串相似 题解: ...

  9. bzoj3555 企鹅QQ

    3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec  Memory Limit: 256 MB Submit: 1640  Solved: 613 Description ...

最新文章

  1. 打印文件测试的测试点
  2. .NET常见线程简介
  3. mui汉字图标_MUI从入门到项目实战(三)增加自定义icon图标
  4. Linux怎么对当前目录提权,linux提权方法(不断总结更新)
  5. java调用接口失败重试,httpclient接口测试中重试控制器设置
  6. HALCON示例程序crystal.hdev通过局部阈值处理和区域处理提取六角形晶体
  7. 碎玻璃:诊断生产Cassandra问题
  8. 跟谁学上市未满1年遭4家机构6轮做空,市值一周缩水近20亿美元
  9. 读后感:软件测试经验与教训
  10. 前端之JavaScript进阶
  11. 【VS开发】MFC修改Opencv namedWindow的风格
  12. 基于51单片机的指纹考勤机密码锁系统
  13. 计算机原理的教学,计算机组成原理教学方法探析
  14. 嵌入式程序员应知道的问题
  15. 包包各部位名称图解_手袋各部位名称
  16. w10更新后怎么找计算机全民,Win10系统下全民WiFi不能用了怎么办
  17. 浅谈马尔可夫决策过程(一)
  18. arnold如何设置鱼眼相机_Arnold(C4DToA)阿诺德渲染教程(51) – 常规摄像机 persp_camera 官方文档...
  19. 设计方法(原型法、敏捷开发)
  20. Chromium 基础库使用说明(入门必看)

热门文章

  1. 3.8 - Using the Print Function
  2. css卷轴动画小程序,微信小程序登录页:CSS实现动画云层漂浮
  3. 单肩包属于什么类目_Lazada时尚类目成为优势类目?
  4. as常用固定搭配_MongoDB 常用查询操作
  5. 使用Android OpenGL ES 2.0绘图之二:定义形状
  6. 再读《SAP德国造》
  7. msi笔记本u盘装linux,微星笔记本bios设置u盘启动的步骤方法详细教程 - 系统家园...
  8. python关键字define_在Python中,使用关键字define定义函数。
  9. Skyline开发1-环境搭建
  10. Unix环境高级编程(十)信号续