传送门 题目分析 题意即求有多少对字符串只相差一个字符,枚举删除每个字符后的哈希, 看有多少相等即可. 比如有如下字符串:$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 +…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3555 很久以前就讲过哈希,但一直没写过题,所以这是哈希第一题! 哈希就是把一个字符串映射成一个数,竟然还能排序! 参考了 hzwer 的博客,但为什么写出来比别人慢了一倍... 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using na…
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2046  Solved: 749[Submit][Status][Discuss] Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大的互联网功能体验,满足用户对社交.资讯.娱乐.交易等多方面的需求.小Q是Pe…
P4503 [CTSC2014]企鹅QQ 题面 题目背景 \(PenguinQQ\) 是中国最大.最具影响力的 \(SNS(Social Networking Services)\) 网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大的互联网功能体验,满足用户对社交.资讯.娱乐.交易等多方面的需求. 题目描述 小 \(Q\) 是 \(PenguinQQ\) 网站的管理员,他最近在进行一项有趣的研究--哪些账户是同一个人注册的.经过长时间的分析,小 \(Q\) 发现同一个人注…
将字符串hash.不难写.然而1.注意用longlong2.数组大小注意...3.似乎别人都用的unsigned long long ?. #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define rep(i,n) for(int i=1;i<=n;i++) #define clr(x,c) memset(…
枚举每个位置,给每个串的前半部分一个哈希值,后半部分一个哈希值,若是它们均相等,则视为这两个串相似. 每次转移之后,排序一下就行了. O(L*n*log(n)). #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; typedef unsigned long long ull; struct HASH{ull l,r;}h…
Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大的互联网功能体验,满足用户对社交.资讯.娱乐.交易等多方面的需求. 小Q是PenguinQQ网站的管理员,他最近在进行一项有趣的研究--哪些账户是同一个人注册的.经过长时间的分析,小Q发现同一个人注册的账户名称总是很相似的,例如Penguin1,Penguin2,Penguin3--于是小Q决定先对…
枚举每个分段的点,每次O(n)更新左边和右边的hash值 然后用双指针O(n)计算答案 #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #define ull unsigned long long using namespace std; struct HS{ ull l,r; }tmp[],hs[]; ull ],c[]; int n,m; ][]; b…
题目大意: 有一些字符串,求其中两个等长且恰好只有一位不同的字符串的对数. 思路: Hash大法好!正着倒着各来一遍(底数不同),之后枚举不同的那一位,前后两段拼起来之后为了有区分前面一部分再乘一个数.模数用unsigned long long自然溢出. 代码: #include<cstdio> #include<iostream> #include<algorithm> using namespace std; ,S2=; ]; unsigned ][],r[][],…
题面戳我 Solution 我们分析题意,他要求的是两个字符串只有一个字符不同,然后我们再看长度\(L \leq 200\),显然我们就可以把每一位删除后\(Hash\),然后判断相同个数即可 我一开始脑子抽了,把所有的删掉的一个字符的剩余的串\(Hash\)放在一起然后计算答案,那样\(Hash\)值相同,串不同的可能性大大增加,所以我们就可以每一位每一位分开考虑 具体看代码即可 说是最水的CTSC的题目,我还写了一晚上qwq,我真菜啊qwq Code //It is coded by nin…