【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希
传送门
题目分析
题意即求有多少对字符串只相差一个字符,枚举删除每个字符后的哈希, 看有多少相等即可。
比如有如下字符串:$Sd123$,其中S部分的哈希值为H,删除的是d,则原字符串的哈希值为$$(((H * T + d) * T + 1) * T + 2) * T + 3 = H * T^4 + d * T^3 + 1 * T^2 + 2 * T + 3$$
删除过后就为$$((H * T + 1) * T + 2) * T +3 = H * T^3 + 1 * T^2 + 2 * T + 3$$
也就是将1以前的哈希值全部剪去然后加上d之前的哈希值乘以$T^{len - delpos}$。
code
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<algorithm> using namespace std;const int N = 3e4 + 5, L = 205, Mod = 23333; typedef unsigned long long ull; const ull H = 149; ull hash[N][L], poww[L], go[N << 2], t[N]; int ecnt, adj[Mod + 5], nxt[N << 2]; int n, l, m, cnt; char s[N][L];inline ull del(int k, int d){return hash[k][l] - hash[k][d] * poww[l - d] + hash[k][d - 1] * poww[l - d]; }int main(){scanf("%d%d%d", &n, &l, &m);for(int i = 1; i <= n; i++)scanf("%s", s[i] + 1);for(int i = 1; i <= n; i++)for(int j = 1; j <= l; j++)hash[i][j] = hash[i][j - 1] * H + s[i][j];poww[0] = 1;for(int i = 1; i <= L; i++) poww[i] = poww[i - 1] * H;for(int j = 1; j <= l; j++){for(int i = 1; i <= n; i++)t[i] = del(i, j);sort(t + 1,t + n + 1);int sum = 1;for(int i = 2; i <= n; i++){if(t[i] == t[i - 1]){cnt += sum;sum++;}else sum = 1;}}printf("%d", cnt);return 0; }
转载于:https://www.cnblogs.com/CzYoL/p/7434515.html
【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希相关推荐
- BZOJ3555: [Ctsc2014]企鹅QQ
[传送门:BZOJ3555] 简要题意: 给出n个字符串长度为m,给出字符串的字符种数,求出相似的字符串个数 相似字符串的定义为:相同位置上两个字符串有且只有一个字符不相同时,两个字符串相似 题解: ...
- 【BZOJ3555】[Ctsc2014]企鹅QQ hash
[BZOJ3555][Ctsc2014]企鹅QQ Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础, ...
- [Ctsc2014]企鹅QQ
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MB [Submit][Status][Discuss] Description ...
- 洛谷 P4503 [CTSC2014]企鹅QQ 解题报告
P4503 [CTSC2014]企鹅QQ 题目背景 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即 ...
- 【BZOJ3555】企鹅QQ,第一次正确的使用哈希A题
Time:2016.08.17 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 夏令营时做的题,一直没发题解 比较简单的思路是枚举每一位,然后看去掉这一位后有多少相同的串 关键是怎么 ...
- 【bzoj3555】[Ctsc2014]企鹅QQ
题目描述: PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大的互联网功能 ...
- 【CTSC2014】【BZOJ3555】企鹅QQ
Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大 ...
- BZOJ 3555 [CTSC2014] 企鹅QQ Hash
Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大 ...
- luoguP4503 [CTSC2014]企鹅QQ hash
既然只有一位的不同,那么我们可以枚举这一位.... 我们只需要快速地计算去掉某一位的$hash$值.... 由于$hash(S) = \sum s[i] * seed^i$,因此去掉第$i$位的权值只 ...
最新文章
- Linux 下 PHP 5.2.x 连接 SQL Server 数据库 FreeTDS 配置笔记
- j2ee html5,HTML5+J2EE实现文件异步上传
- JavaScript事件循环探索
- 醒醒!Python已经支持中文变量名啦!
- 荣耀V40值得购买吗?玩游戏是一把好手!
- Spring和石英:多作业计划服务
- java和c++的区别大吗_小自考本科含金量高吗?小自考和大自考有什么区别?
- JMeter中使用“用户自定义变量”实现参数化
- visio网络拓扑图 下载_Visio2019软件下载及安装教程
- SQL Server 函数的使用(转换函数)
- 引用使用_引用公文标题时,“”与《》正确使用法则
- linux目录与文件,Linux目录与文件基本操作
- 一个离线的简单的 JSON 格式化编辑器
- opencv android模版匹配,基于opencv模板匹配的目标检测方法
- 产品经理的私房菜 - 腾讯产品模型 - 学习能力篇
- 华为OD机试 - 乱序整数序列两数之和绝对值最小
- linux grep,sed和awk常用操作
- 第六届高分子材料国际研讨会(PMS-BT 2019)
- JAVA_HOME指的是什么内容?
- 着色器Encoding floats to RGBA
热门文章
- PAT_B_1058_Java(20分)
- python语言是一门编程语言_python是一门怎样的编程语言?老男孩python入门
- html dot标签,html – CSS Dot符号命名约定
- 大话“用户注册激活,忘记密码”发送邮件功能
- [Golang] GoConvey测试框架使用指南
- 【Ubuntu-Tensorflow】GPU设置及显存资源分配
- opencv_python关于Qt的错误
- 范数在机器学习中的作用_设计在机器学习中的作用
- 农村民间借贷一分利息,有借条受法律保护吗?
- 《长调》 :寻找我们共同失去的天堂