题目大意

给出nnn个长度为lll且互不相同的串,若两个串只有一个字符不相同那么这两个串相似。

求有多少对相似的串。


解题思路

我们可以枚举不相似的位,然后我们考虑字符串hashhashhash

然后我们可以将删掉了一位的字符串拆分为由[1..k−1][1..k-1][1..k−1]和[k+1..l][k+1..l][k+1..l]组成的字符串。

我们先正着求一遍hashhashhash定为hashihash_ihashi​,然后倒着求一遍hashhashhash定为dhashidhash_idhashi​。

然后删除第kkk位之后的hashhashhash值为hashk+dhashk∗pkhash_k+dhash_k*p^khashk​+dhashk​∗pk

然后排序统计即可。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ull unsigned long long
using namespace std;
const int N=30100,L=210;
const ull p=13331;
ull hash[N],hash1[N][L],hash2[N][L],pow;
int n,l,ans;
char s[N][L];
void work(int k)
{for(int i=1;i<=n;i++)hash[i]=hash1[i][k-1]+hash2[i][k+1]*pow;sort(hash+1,hash+1+n);hash[n+1]=23333333;int num=0;for(int i=1;i<=n;i++){num++;if(hash[i]!=hash[i+1])ans+=num*(num-1)/2,num=0;}
}
int main()
{scanf("%d%d%d",&n,&l,&pow);for(int i=1;i<=n;i++){scanf("%s",s[i]+1);for(int j=1;j<=l;j++)hash1[i][j]=hash1[i][j-1]*p+s[i][j];for(int j=l;j>=1;j--)hash2[i][j]=hash2[i][j+1]*p+s[i][j];}pow=1;for(int i=1;i<=l;i++)pow*=p,work(i);printf("%d",ans);
}

P4503-[CTSC2014]企鹅QQ【字符串hash】相关推荐

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

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

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

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

  3. [Ctsc2014]企鹅QQ

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

  4. luoguP4503 [CTSC2014]企鹅QQ hash

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

  5. BZOJ 3555 [CTSC2014] 企鹅QQ Hash

    Description 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. 3555: [Ctsc2014]企鹅QQ

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

  10. 深圳神牛python培训_请教神牛_字符串hash

    针对字符串hash 我早就听闻可以暴力的干一些事情. 比如 可以... 很多很多 实现O(n)求出 模式串在文本串出现的次数. 但是我不会这什么hash. 我会自然溢出字符串hash 嘿嘿 unsig ...

最新文章

  1. 微软新员工吐槽:技术含量一般,好后悔拒绝了阿里,感觉要废掉
  2. 给华为S5700交换机配下链路聚合
  3. kbmMW功能 - kbmMWProcess单元(转帖)
  4. Matlab之logspace
  5. 【渝粤教育】国家开放大学2018年春季 3780-21T燃气设备操作与维护 参考试题
  6. 【RK3399Pro学习笔记】三、Debian 9 安装 ROS (Thinker Edge R)
  7. 屏幕持续升级!一加8斩获DisplayMate A+评级
  8. MediaPlayer/MediaRecorder与AudioTrack/AudioRecord区别(三十九)
  9. ArcMAP 使用绘图工具添加注记
  10. ecshop lang用法
  11. Java——可能的文本题
  12. matlab 找到数组中第一个不连续点_超全Matlab绘图方法整理
  13. 推荐一个在线的icon图片合成工具(CSS Sprite)
  14. 关于 np.arccos/arcsin 计算之前需要必须要 np.clip 的那件小事儿
  15. MySQL特异功能之:Impossible WHERE noticed after reading const tables
  16. BeAlert 一款alert和confirm美化插件(优化)
  17. java索引图片,索引从图片中提取像素数据的代码的错误
  18. 怎么放慢音乐速度_为什么我的相机放慢速度或停止连拍?
  19. CBL-Mariner
  20. 国产软件漏洞分析系列2:泛微OA e-cology 8/9 安全补丁分析之file

热门文章

  1. java递归单链表查找中间元素_《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)...
  2. 促进新一代人工智能产业发展三年行动计划_工信部新一代人工智能产业创新重点揭榜任务——中国联通智能化网络基础设施及开放平台启动会成功召开...
  3. python怎么安装开发版_python - easy_install的安装和使用
  4. idea 一直在build_让web开发部署提速 8 倍的一款 IDEA 插件,你有在用?
  5. 长春工业大学计算机科学与技术录取分数,2021年长春工业大学各省各专业最低投档录取分数线统计(文科 理科)...
  6. 拆分路径 java_JAVA 类文件中的路径如何拆分和替换
  7. 王某调离岗位后所使用计算机由新到任陈某,2017年沧州事业单位考试模拟卷
  8. C++中有关queue常用函数的用法及其注意要项
  9. [RabbitMQ]常用命令
  10. [数据结构]链表中销毁和清空的区别