【BZOJ3555】企鹅QQ,第一次正确的使用哈希A题
Time:2016.08.17
Author:xiaoyimi
转载注明出处谢谢
传送门
思路:
夏令营时做的题,一直没发题解
比较简单的思路是枚举每一位,然后看去掉这一位后有多少相同的串
关键是怎么快速比较与计算相同的串
比较容易的方法就是hash
hash值可以快速比较大小,而且通过对hash值O(nlogn)O(nlogn)的排序后可以O(n)O(n)扫出相同的串
num[i][j]表示字符j在一个串中处于i位置时的hash值
hash[i]表示串i的hash值
枚举每一位j时,此时串i的hash值就是hash[i]-num[i][s[j]]
排序比较一下就可以了
复杂度O(Lnlogn)O(Lnlogn)L是字符串长度
注意:
hash的方法是关键
这里直接使用131+自然溢出就好了
如果用什么取模大质数……会TLE or WA
当时搞的快疯了……
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
ll ans;
int n,len,S;
ull hash[30002],num[202][65],p[202],tmp[30002];
char s[30002][202];
int cal(char c)
{if (c>='0'&&c<='9') return c-47;else if (c>='A'&&c<='Z') return c-54;else if (c>='a'&&c<='z') return c-60;else if (c=='@') return 63;else if (c=='_') return 64;return 0;
}
main()
{scanf("%d%d%d",&n,&len,&S);p[0]=1;for (int i=1;i<=len;i++) p[i]=p[i-1]*67*131;for (int i=1;i<=len;i++)for (int j=1;j<=64;j++)num[i][j]=p[i-1]*j*131;for (int i=1;i<=n;i++){getchar();for (int j=1;j<=len;j++)s[i][j]=getchar(),hash[i]=hash[i]+num[j][cal(s[i][j])];}for (int i=1;i<=len;i++){for (int j=1;j<=n;j++) tmp[j]=hash[j]-num[i][cal(s[j][i])];sort(tmp+1,tmp+n+1);int sum=1;for (int j=1;j<=n;j++)if (tmp[j]!=tmp[j+1]) ans+=(ll)sum*(sum-1)/2,sum=1;else sum++;}printf("%lld",ans);
}
【BZOJ3555】企鹅QQ,第一次正确的使用哈希A题相关推荐
- bzoj3555 企鹅QQ
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MB Submit: 1640 Solved: 613 Description ...
- 【BZOJ3555】[Ctsc2014]企鹅QQ hash
[BZOJ3555][Ctsc2014]企鹅QQ Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础, ...
- [Ctsc2014]企鹅QQ
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MB [Submit][Status][Discuss] Description ...
- 洛谷 P4503 [CTSC2014]企鹅QQ 解题报告
P4503 [CTSC2014]企鹅QQ 题目背景 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即 ...
- QQ输入正确密码却验证错误的解决办法:)
http://www.newsuzhou.cn/ 2007-5-4 8:20:48 <script type="text/javascript">put(appComm ...
- 苹果cms第三方登录QQ互联正确回调设置方法
QQ互联进行注册认证:https://connect.qq.com 登陆qq后点击头像申请开发者完善资料后提交审核. 域名填写你的网站域名 回调地址正确填写:http://域名/index.php/u ...
- BZOJ3555: [Ctsc2014]企鹅QQ
[传送门:BZOJ3555] 简要题意: 给出n个字符串长度为m,给出字符串的字符种数,求出相似的字符串个数 相似字符串的定义为:相同位置上两个字符串有且只有一个字符不相同时,两个字符串相似 题解: ...
- 【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希
传送门 题目分析 题意即求有多少对字符串只相差一个字符,枚举删除每个字符后的哈希, 看有多少相等即可. 比如有如下字符串:$Sd123$,其中S部分的哈希值为H,删除的是d,则原字符串的哈希值为$$( ...
- 【CTSC2014】【BZOJ3555】企鹅QQ
Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大 ...
最新文章
- 给python点颜色青少年学编程_早晨送给自己的句子,句句经典励志!
- yolov3模型识别不出训练图片_YOLOv3训练自己的模型
- golang中的strings.Replace
- 汇编:div 除法指令
- word 另存为xml后,读取xml的图片数据
- iptables nat实验_【零基础学云计算】LVS负载均衡群集之NAT模式搭建 (实践篇)...
- oracle的redolog停止,Oracle Redo Log日志故障处理一则
- 《Web Hacking 101》中的链接整理
- unity手机 通过php连接mysql_如何从Unity连接到数据库
- Xshell官网免费版
- 基于Python的DBC转Excel脚本
- HBuilderX App开发环境搭建
- 微分方程Gear方法MATLAB,matlab求解常微分方程(组)
- python多个判断条件_python if not in 多条件判断代码
- C4D倒角应用—样条挤压后如何正确倒角
- 1. 【Part3】 Contour Detection and Hierarchical Image Segmentation【轮廓检测图像分割】
- 黄健翔:观看欧冠决赛的建议!
- python分钟转换小时_Python程序将秒转换为小时,分钟和秒
- 【Linux】linux的网络配置(动态IP与静态IP)
- windows10无法连接到SENS,无限一分钟重启
热门文章
- Forrester:华为云容器是容器混合云最佳选择
- 【华为大咖分享】6.华为专家揭秘研发效能提升之道(后附PPT下载地址)
- oracle存储tar,Linux环境使用TAR命令快速部署安装Oracle
- php hibernate,Hibernate总结
- android studio moudel,Android Studio将module变为library
- Service startService方式的服务
- php 不能运行,PHP 环境不能正常运行
- matlab中LMI工具箱函数feasp的用法
- 一分钟教你在PyTorch跑模型的时候提取中间层查看图片
- java 批量插入clob_SpringBoot系列(16)线程池Executors并发编程之批量查询-插入数据