【BZOJ3555】[Ctsc2014]企鹅QQ

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

题解:枚举每个字符串删去的位置,全都hash之后排序,判个重就好了

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
unsigned long long hash[6000010],seed[210],t;
int n,m,s,ans,tot;
char str[310];
int main()
{scanf("%d%d%d",&n,&m,&s);int i,j;for(seed[0]=i=1;i<m;i++) seed[i]=seed[i-1]*131;for(i=1;i<=n;i++){scanf("%s",str);for(t=j=0;j<m;j++) t=t*131+str[j];for(j=0;j<m;j++) hash[++tot]=t-seed[m-j-1]*str[j];}sort(hash+1,hash+tot+1);int pre=1;for(i=2;i<=tot;i++){if(hash[i]==hash[i-1])  pre++;else    ans+=pre*(pre-1)/2,pre=1;}ans+=pre*(pre-1)/2;printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/CQzhangyu/p/6673443.html

【BZOJ3555】[Ctsc2014]企鹅QQ hash相关推荐

  1. luoguP4503 [CTSC2014]企鹅QQ hash

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

  2. BZOJ3555: [Ctsc2014]企鹅QQ

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

  3. BZOJ 3555 [CTSC2014] 企鹅QQ Hash

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

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

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

  5. [Ctsc2014]企鹅QQ

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

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

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

  7. 【CTSC2014】【BZOJ3555】企鹅QQ

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

  8. 【bzoj3555】[Ctsc2014]企鹅QQ

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

  9. 【BZOJ3555】企鹅QQ,第一次正确的使用哈希A题

    Time:2016.08.17 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 夏令营时做的题,一直没发题解 比较简单的思路是枚举每一位,然后看去掉这一位后有多少相同的串 关键是怎么 ...

最新文章

  1. pandas使用replace函数移除dataframe数值数据中的逗号并基于处理后的数据生成新的整型数据列(remove comma from column values in Pandas)
  2. rabbitmq启动方式
  3. 数据结构与算法笔记(十六)—— 二叉搜索树
  4. boost::program_options模块实现处理响应文件的测试程序
  5. VTK:简单操作之RandomSequence
  6. 一文捋清Android消息机制
  7. spark学习-33-Spark的RPC通信源码分析
  8. Hadoop Configuration 源码详解
  9. 微信微页面源码H5页面
  10. 利用python3 生成密码本
  11. WinCE下3G模块的调试
  12. c# sqlite 批量修改
  13. 窗口置顶工具v2.1.0
  14. 设置vscode背景图片
  15. 屏幕录制软件 Camstudio
  16. CANOE入门:CAPL语言(1)
  17. 中国矿业大学2020岁末赛校赛wp
  18. 6月20日打卡50个单词
  19. 9个开源的 Vue3 组件库
  20. 某汽车轮渡口,过江渡船每次能载 10 辆车过江。

热门文章

  1. Apache Commons Math3学习笔记(2) - 多项式曲线拟合(转)
  2. PLSQL_SQL Loader的概念和用法(概念)
  3. 获取线程结束代码(Exit Code)
  4. 利用Apache ab以及GNUPlot来进行Web测试
  5. ajax技术如何实现,ajax技术的基本原来以及实现过程
  6. android判断是否json格式,Android判断json格式将错误信息提交给服务器
  7. 示波器触发模式及其使用
  8. 如何让Moodle中所连结的flash等媒体事先呈现在画面上?
  9. 中国的TD-LTE-Advanced被国际电联确立为4G标准!
  10. 微型激光投影廉价版本