正解:哈希

解题报告:

传送门$QwQ$

直接$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$ 哈希的更多相关文章

  1. [洛谷P4503][CTSC2014]企鹅QQ

    题目大意:给你$n(n\leqslant3\times10^4)$个长度为$l(l\leqslant200)$的字符串,要你求出有多少对字符串是相似的,相似的定义是两个字符串只在一位上不同. 题解:可 ...

  2. 洛谷 P4503 [CTSC2014]企鹅QQ

    暴力枚举不同的一位即可.. 主要是常数问题 1.统计答案时用sort速度快于用tr1/unordered_map,后者又快于map (tr1/unordered_map完全达不到理论复杂度上的O(1) ...

  3. 【题解】P4503 [CTSC2014]企鹅QQ(哈希)

    [题解]P4503 [CTSC2014]企鹅QQ(哈希) 考虑这样一种做法,将每个字符串的删去某个字符的新字符串的哈希值存下来,然后最后\(sort\)一遍双指针统计每个值相同的数的个数\(x\),这 ...

  4. p4503&bzoj3555 企鹅QQ

    传送门(洛谷) 传送门(bzoj) 题目 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相 ...

  5. 3150luogu洛谷

    若说代码 那真的是很水 但是 思想却有点意思 这道题是洛谷博弈论专题的第一道入门题, 然而刚开始我是不会做的, 毕竟是道入门题, 我博弈论还没入门呢. 这道题的做法就是: 如果m为偶数, 那么先手赢( ...

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

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

  7. 洛谷P2462 [SDOI2007]游戏(哈希+最长路)

    题面 传送门 题解 我们把字符的出现次数哈希起来,然后把每个点向能在它之后的点连边.那么这显然是一个\(DAG\),直接求最长路就行了 //minamoto #include<bits/stdc ...

  8. P1219 八皇后 洛谷

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  9. P1656 炸铁路 洛谷

    https://www.luogu.org/problem/show?pid=1656 题目描述 因为某国被某红色政权残酷的高压暴力统治.美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵. ...

随机推荐

  1. ExecutorService小试牛刀

    现在的项目中有将学生批量加入课程的需求,于是想根据这个需求测试一下ExecutorService的效率.假设一个场景:现在有100门课,1500名学生,要求每15个人加入一门课程,不重复. 查询并拼接 ...

  2. JS高级第1天

    阶段目标 主要学习 JS 的面向对象编程思想. 对象 概念 在编程领域,任何 事 和 物都可以概括成对象. 对象概念练习 用编程思想抽象出你心仪对象的属性和方法. 对象由属性和方法组成,属性和方法都可 ...

  3. day2_python之文件操作

    一.文件常用操作 #1. 打开文件的模式有(默认为文本模式): r ,只读模式[默认模式,文件必须存在,不存在则抛出异常] w,只写模式[不可读:不存在则创建:存在则清空内容] a, 之追加写模式[不 ...

  4. IDEA 通过数据库生成entity实体类

    IDEA利用数据库生成entity类教程 1.在左上角有一个View 选项 2. 然后选择 TOOL Windows 3. 然后选择Database然后会弹出一个窗口 4.选择+号 5.选择data ...

  5. Project Euler Problem 14-Longest Collatz sequence

    记忆化搜索来一发.没想到中间会爆int #include <bits/stdc++.h> using namespace std; const int MAXN = 1000000; in ...

  6. HDU 4417 Super Mario 主席树查询区间小于某个值的个数

    #include<iostream> #include<string.h> #include<algorithm> #include<stdio.h> ...

  7. 2013-4-3 C#中alt键不是Keys.Alt 而是 Keys.LMenu

    2013-4-3 C#中alt键不是Keys.Alt而是Keys.LMenu

  8. html前端登录验证

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Project Euler Problem 7-10001st prime

    素数线性筛 MAXN = 110100 prime = [0 for i in range(210000)] for i in range(2,MAXN): if prime[i] == 0: pri ...

  10. 怎样判断一个jquery对象是否为空jquery对象

    if ( $('#myDiv').length ){} http://stackoverflow.com/questions/47... 也可以直接判断$('#myDiv')[0]===undefin ...