洛谷$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,对该国进行战略性措施,以解救涂炭的生灵. ...
随机推荐
- Flask学习之十一 邮件支持
英文博客地址:blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xi-email-support 中文翻译地址:http://www. ...
- JDK8中`Optional.orElse()` 和`Optional.orElseGet()`之间的区别
看例子就明白了 ``` static String B() { System.out.println("B()..."); return "B"; } publ ...
- poj 1716 Integer Intervals(差分约束)
1716 -- Integer Intervals 跟之前个人赛的一道二分加差分约束差不多,也是求满足条件的最小值. 题意是,给出若干区间,需要找出最少的元素个数,使得每个区间至少包含两个这里的元素. ...
- QQ 第三方登录
- <STL源码剖析> 6.3.6 power
计算power的算法说明 http://www.sxt.cn/u/324/blog/2112 翻译自 http://videlalvaro.github.io/2014/03/the-power-a ...
- H3C 用debugging ppp all命令调试PPP
- 深入理解 Embedding层的本质
继上文https://blog.csdn.net/weixin_42078618/article/details/82999906探讨了embedding层的降维效果,时隔一个月,分享一下嵌入层在NP ...
- Vue之webpack的安装与配置及其简单应用
一.文件结构 二.index.html <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- 获取exe和dll里面的资源
有时候需要仿照另一个程序实现一些对话框,比较笨的办法是打开那个程序,照着样子自己在VC里面画啊画.这样的效率实在有点低. 现在有很多工具可以从exe和dll里面取出图片.图片.字符串.对话框等资源.比 ...
- 2019-2-28-C#-16-进制字符串转-int-
title author date CreateTime categories C# 16 进制字符串转 int lindexi 2019-02-28 11:51:36 +0800 2018-04-2 ...