思路

如果直接暴力的比较的话,不用想也知道会超时

所以考虑另一种方法,将前缀和的思想运用到hash中。用两个hash,一个从前往后记录,一个从后往前记录,然后枚举哪一位是不相同的,然后删掉这一位,将这一位之前的hash值和这一位之后的hash值相加,存在一个数组hs中,如果两个串的hs值是相等的,那么它俩就是相似的字符串。另外这个题自然溢出的hash完全能过,不用担心毒瘤

代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm> const int maxn = 30003;
typedef unsigned long long ULL;
const ULL base = 131;
const int Mod = 1e9+7; using namespace std; int n, l, s, Ans;
ULL hs1[maxn][233], hs2[maxn][233], hs[maxn];
char ch[maxn][233]; inline void init(int x) {
for(int i=1; i<=l; i++) {
hs1[x][i] = hs1[x][i-1] * 131 + ch[x][i];
}
for(int i=l; i>=1; i--) {
hs2[x][i] = hs2[x][i+1] * 137 + ch[x][i];
}
} int main() {
scanf("%d%d%d", &n, &l, &s);
for(int i=1; i<=n; i++) {
scanf("%s", ch[i]+1);
init(i);
}
for(int i=1; i<=l; i++) {
for(int j=1; j<=n; j++) {
hs[j] = hs1[j][i-1]*233 + hs2[j][i+1]*211;
}
sort(hs+1, hs+1+n);
int ans = 1;
for(int j=1; j<n; j++) {
if(hs[j] == hs[j+1]) Ans += ans, ans ++;
else ans = 1;
}
}
printf("%d", Ans);
}

  

Luogu P4503 [CTSC2014]企鹅QQ的更多相关文章

  1. Luogu P4503 [CTSC2014]企鹅QQ(字符串哈希)

    P4503 [CTSC2014]企鹅QQ 题面 题目背景 \(PenguinQQ\) 是中国最大.最具影响力的 \(SNS(Social Networking Services)\) 网站,以实名制为 ...

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

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

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

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

  4. 字符串Hash || BZOJ 3555: [Ctsc2014]企鹅QQ || P4503 [CTSC2014]企鹅QQ

    题面:[CTSC2014]企鹅QQ 题解:无 代码: #include<iostream> #include<cstring> #include<cstdio> # ...

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

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

  6. 洛谷 P4503 [CTSC2014]企鹅QQ

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

  7. 洛谷$P4503\ [CTSC2014]$企鹅$QQ$ 哈希

    正解:哈希 解题报告: 传送门$QwQ$ 直接$O(len)$枚举哪一位,然后把这一位删了重新拼接起来,存桶里查下就成 $over$? 主要的难点大概在卡哈希+卡常$QAQ$ #include< ...

  8. BZOJ 3555: [Ctsc2014]企鹅QQ [字符串哈希]【学习笔记】

    3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2046  Solved: 749[Submit][Statu ...

  9. bzoj3555: [Ctsc2014]企鹅QQ

    将字符串hash.不难写.然而1.注意用longlong2.数组大小注意...3.似乎别人都用的unsigned long long ?. #include<cstdio> #includ ...

随机推荐

  1. 在js中取选中的radio值

    在js中取选中的radio值 <input type="radio" name="address" value="0" /> & ...

  2. spring cloud-spring boot 文档信息

    官网: spring boot springcloud 学习资源 使用IDEA创建SpringBoot项目 Spring Boot教程https://blog.csdn.net/forezp/arti ...

  3. android 添加手机短信,获取手机短信,删除手机短信和修改手机短信

    注意添加权限: <uses-permission android:name="android.permission.READ_SMS"></uses-permis ...

  4. bzoj1537

    dp+树状数组 一维排序,一维离散化,然后跑lis,其实就是一个二维偏序 #include<bits/stdc++.h> using namespace std; ; int dp[N], ...

  5. ElasticSearch NEST

    1. 什么是ElasticSearch? ElasticSearch is a powerful open source search and analytics engine that makes ...

  6. java运行代码连接mysql时提示:找不到类错误

    使用IntelliJ IDEA Community Edition进行代码编写.. 使用一下代码连接mysql时出现了:java.lang.ClassNotFoundException: com.my ...

  7. ViewModel、ViewData、ViewBag、TempData、Session之间的区别和各自的使用方法

    ViewModel    ViewModel 是一个用来渲染 ASP.NET MVC 视图的强类型类,可用来传递来自一个或多个视图模型(即类)或数据表的数据.可将其看做一座连接着模型.数据和视图的桥梁 ...

  8. P1266 速度限制(分层图spfa)

    P1266 速度限制 题目描述 在这个繁忙的社会中,我们往往不再去选择最短的道路,而是选择最快的路线.开车时每条道路的限速成为最关键的问题.不幸的是,有一些限速的标志丢失了,因此你无法得知应该开多快. ...

  9. 源码阅读之LinkedHashMap(JDK8)

    概述 LinkedHashMap继承自HashMap,实现了Map<K,V>接口.其内部还维护了一个双向链表,在每次插入数据,或者访问.修改数据时,会增加节点.或调整链表的节点顺序.以决定 ...

  10. tp5增加验证的自定义规则