洛谷$P4503\ [CTSC2014]$企鹅$QQ$ 哈希
正解:哈希
解题报告:
直接$O(len)$枚举哪一位,然后把这一位删了重新拼接起来,存桶里查下就成
$over$?
主要的难点大概在卡哈希+卡常$QAQ$
#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define mp make_pair
#define ri register int
#define rc register char
#define rb register bool
#define ull unsigned long long
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i) const int N=200+10,M=30000+10,bas1=19260817,bas2=19491001;
const ull mod1=20190816170251;
int n,l,as;
char str[N];
ull poww[N],hsh1[M][N],hsh2[M][N],h1[M][N],h2[M][N],p[N];
pair<ull,ull>P[M]; il int read()
{
rc ch=gc;ri x=0;rb y=1;
while(ch!='-' && (ch>'9' || ch<'0'))ch=gc;
if(ch=='-')ch=gc,y=0;
while(ch>='0' && ch<='9')x=(x<<1)+(x<<3)+(ch^'0'),ch=gc;
return y?x:-x;
}
il void solv(ri x)
{
rp(i,1,n)
{ri tmp=(hsh1[i][x-1]*poww[l-x+1]%mod1+hsh2[i][x+1])%mod1,t=h1[i][x-1]*1007+h2[i][x+1]*197;P[i]=mp(tmp,t);}
sort(P+1,P+1+n);for(ri j=2,s=1;j<=n;++j)if(P[j]==P[j-1])as+=s++;else s=1;
//printf("%d\n",as);
} int main()
{
//freopen("4503.in","r",stdin);freopen("4503.out","w",stdout);
n=read();l=read();read();poww[0]=1;rp(i,1,l)poww[i]=poww[i-1]*bas1%mod1,p[i]=p[i-1]*bas2;
rp(i,1,n)
{
scanf("%s",str+1);
rp(j,1,l)hsh1[i][j]=(hsh1[i][j-1]*bas1%mod1+str[j])%mod1,h1[i][j]=h1[i][j-1]*bas2+str[j];
my(j,l,1)hsh2[i][j]=(hsh2[i][j+1]*bas1%mod1+str[j])%mod1,h2[i][j]=h2[i][j+1]*bas2+str[j];
}
rp(i,1,l)solv(i);;printf("%d\n",as);
return 0;
}
洛谷$P4503\ [CTSC2014]$企鹅$QQ$ 哈希的更多相关文章
- [洛谷P4503][CTSC2014]企鹅QQ
题目大意:给你$n(n\leqslant3\times10^4)$个长度为$l(l\leqslant200)$的字符串,要你求出有多少对字符串是相似的,相似的定义是两个字符串只在一位上不同. 题解:可 ...
- 洛谷 P4503 [CTSC2014]企鹅QQ
暴力枚举不同的一位即可.. 主要是常数问题 1.统计答案时用sort速度快于用tr1/unordered_map,后者又快于map (tr1/unordered_map完全达不到理论复杂度上的O(1) ...
- 【题解】P4503 [CTSC2014]企鹅QQ(哈希)
[题解]P4503 [CTSC2014]企鹅QQ(哈希) 考虑这样一种做法,将每个字符串的删去某个字符的新字符串的哈希值存下来,然后最后\(sort\)一遍双指针统计每个值相同的数的个数\(x\),这 ...
- p4503&bzoj3555 企鹅QQ
传送门(洛谷) 传送门(bzoj) 题目 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相 ...
- 3150luogu洛谷
若说代码 那真的是很水 但是 思想却有点意思 这道题是洛谷博弈论专题的第一道入门题, 然而刚开始我是不会做的, 毕竟是道入门题, 我博弈论还没入门呢. 这道题的做法就是: 如果m为偶数, 那么先手赢( ...
- 洛谷 P4503 [CTSC2014]企鹅QQ 解题报告
P4503 [CTSC2014]企鹅QQ 题目背景 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即 ...
- 洛谷P2462 [SDOI2007]游戏(哈希+最长路)
题面 传送门 题解 我们把字符的出现次数哈希起来,然后把每个点向能在它之后的点连边.那么这显然是一个\(DAG\),直接求最长路就行了 //minamoto #include<bits/stdc ...
- P1219 八皇后 洛谷
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- P1656 炸铁路 洛谷
https://www.luogu.org/problem/show?pid=1656 题目描述 因为某国被某红色政权残酷的高压暴力统治.美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵. ...
随机推荐
- Python深入:02浅拷贝深拷贝
对象赋值实际上是简单的对象引用.也就是说当你创建一个对象,然后把它赋给另一个变量的时候,Python并没有拷贝这个对象,而只是拷贝了这个对象的引用. 假设想创建一对小夫妻的通用档案,名为person. ...
- HZOJ string
正解炸了…… 考试的时候想到了正解,非常高兴的打出来了线段树,又调了好长时间,对拍了一下发现除了非常大的点跑的有点慢外其他还行.因为复杂度算着有点高…… 最后正解死于常数太大……旁边的lyl用同样的算 ...
- Lists and keys
function NumberList(props) { const numbers = props.numbers; const listItems = numbers.map((number) = ...
- 基于LIVE555的RTSP QoS实现
如何从OnDemandServerMediaSubsession类以及继承类对象中获取RTCP信息(句柄) OnDemandServerMediaSubsession.cpp void StreamS ...
- pytorch 优化器调参
torch.optim 如何使用optimizer 构建 为每个参数单独设置选项 进行单次优化 optimizer.step() optimizer.step(closure) 算法 如何调整学习率 ...
- oracle优化EXPORT和IMPORT
使用较大的BUFFER(比如10MB , 10,240,000)可以提高EXPORT和IMPORT的速度. ORACLE将尽可能地获取你所指定的内存大小,即使在内存不满足,也不会报错.这个值至少要和表 ...
- php中 instanceof有什么作用
php中 instanceof有什么作用 作用:(1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口.
- jq添加插入删除元素
https://www.cnblogs.com/sandraryan/ append() - 在被选元素的结尾插入内容 <body> <div class="wrap&qu ...
- 洛谷P3377 【模板】左偏树(可并堆) 题解
作者:zifeiy 标签:左偏树 这篇随笔需要你在之前掌握 堆 和 二叉树 的相关知识点. 堆支持在 \(O(\log n)\) 的时间内进行插入元素.查询最值和删除最值的操作.在这里,如果最值是最小 ...
- python3快捷键
原文:https://blog.csdn.net/pipisorry/article/details/39909057 PyCharm3.0默认快捷键(翻译的) PyCharm Default Key ...