题面戳我

Solution

  • 我们分析题意,他要求的是两个字符串只有一个字符不同,然后我们再看长度\(L \leq 200\),显然我们就可以把每一位删除后\(Hash\),然后判断相同个数即可
  • 我一开始脑子抽了,把所有的删掉的一个字符的剩余的串\(Hash\)放在一起然后计算答案,那样\(Hash\)值相同,串不同的可能性大大增加,所以我们就可以每一位每一位分开考虑
  • 具体看代码即可
  • 说是最水的CTSC的题目,我还写了一晚上qwq,我真菜啊qwq

Code

//It is coded by ning_mew on 7.24
#include<bits/stdc++.h>
#define LL long long
using namespace std; const int maxn=30007; int n,L,S;
char ch[210];
unsigned LL box[maxn],cnt=0;
unsigned LL f[maxn][205],g[maxn][205],Pow[3][maxn],ans=0; LL gi(char c){
if(c>='a'&&c<='z')return (LL)(c-'a'+1);
if(c>='A'&&c<='Z')return (LL)(c-'A'+1+26);
if(c>='0'&&c<='9')return (LL)(c-'0'+1+52);
if(c=='@')return 63;return 64;
}
bool cmp(const LL &x,const LL &y){return x<y;}
int main(){
scanf("%d%d%d",&n,&L,&S);
for(int i=1;i<=n;i++){
scanf("%s",ch+1);
unsigned LL boxx=0;
for(int j=1;j<=L;j++){
boxx=boxx*233+gi(ch[j]);
f[i][j]=boxx;
}
boxx=0;
for(int j=L;j>=1;j--){
boxx=boxx*213+gi(ch[j]);
g[i][j]=boxx;
}
}
int last=0;
for(int i=1;i<=L;i++){
cnt=0;last=0;
for(int j=1;j<=n;j++){box[++cnt]=f[j][i-1]*277+g[j][i+1]*217;}
sort(box+1,box+cnt+1,cmp);
for(int j=1;j<=cnt;j++){
if(box[j]!=box[j+1]){ans+=1ll*(j-last)*(j-last-1)/2;last=j;}
}
}
printf("%lld\n",ans); return 0;
}

博主蒟蒻,随意转载。但必须附上原文链接:http://www.cnblogs.com/Ning-Mew/,否则你会场场比赛暴0!!!

【题解】 bzoj3555: [Ctsc2014]企鹅QQ (字符串Hash)的更多相关文章

  1. 【BZOJ-3555】企鹅QQ 字符串Hash

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

  2. 【bzoj3555】[Ctsc2014]企鹅QQ 字符串hash

    题目描述 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大的互联网功能体 ...

  3. BZOJ3555 [Ctsc2014]企鹅QQ 【hash】

    题目 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大的互联网功能体验, ...

  4. [BZOJ3555] [Ctsc2014]企鹅QQ(Hash)

    传送门 可以枚举被删除的位置,然后用hash表判重,然而网上好多题解都是用 sort 判重的. 不知道为什么,int 总是过不了,换成 long long 或者是 unsigned long long ...

  5. bzoj3555: [Ctsc2014]企鹅QQ (Hash)

    枚举每个分段的点,每次O(n)更新左边和右边的hash值 然后用双指针O(n)计算答案 #include<stdio.h> #include<string.h> #includ ...

  6. bzoj3555 [Ctsc2014]企鹅QQ——字符串哈希

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3555 很久以前就讲过哈希,但一直没写过题,所以这是哈希第一题! 哈希就是把一个字符串映射成一 ...

  7. bzoj3555: [Ctsc2014]企鹅QQ

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

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

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

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

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

随机推荐

  1. Linux下php安装redis扩展(redis已经安装)

     1. 下载需要的php操作redis的扩展包 (1).切换到 cd  /usr/local/src (2).   wget https://github.com/nicolasff/phpredis ...

  2. Python IO模型

    这篇博客是本人借鉴一些大神的博客并结合自己的学习过程写下的. 事件驱动模型 事件驱动模型是一种编程范式,这里程序的执行流由外部事件来决定.它的特点是包含一个事件循环,当外部事件发生时,不断从队列里取出 ...

  3. 环同态p64推论

    1.为什么属于f(x)∈f(I),那么 2.为什么x属于ker,那么f(x)属于f(I)?

  4. Git使用过程中的问题

    Q-1:怎么切换到远程的分支 本地已经有一个代码库了(是从github上clone的),但是现在远程库中一个新的branch,怎么拉取远程分支,并在本地创建该分支(内容一样).how to do? # ...

  5. ERP & CRM

    ERP流程_百度百科https://baike.baidu.com/item/ERP%E6%B5%81%E7%A8%8B/8099248 CRM_百度百科https://baike.baidu.com ...

  6. 解读event.returnValue和return false

    前言 首先我们要清楚returnValue是IE的一个属性,如果设置了该属性,它的值比事件句柄的返回值优先级要高,把它的值设置为false,可以取消发生事件源元素的默认动作:return false就 ...

  7. 【转帖】理解 Linux 的虚拟内存

    理解 Linux 的虚拟内存 https://www.cnblogs.com/zhenbianshu/p/10300769.html 段页式内存 文章了里面讲了 页表 没讲段表 记得最开始的时候 学习 ...

  8. Day 4-1 模块的导入方法和路径

    什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码 ...

  9. 解决小程序webview缓存机制

    在打开webview的时候在地址后面加上随机数或者字符串 并且H5页面使用文件hash

  10. 介绍Ajax与jQuery技术

    Ajxs技术(异步的JavaScript与XML)已有多种技术的组合 Ajax的优点是什么? 1.可以实现客户端的异步请求操作2.进而在不需要刷新页面的情况下与服务器进行通信,减少用户的等待时间3.减 ...