洛谷 P4503 [CTSC2014]企鹅QQ 解题报告
P4503 [CTSC2014]企鹅QQ
题目背景
PenguinQQ是中国最大、最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志、群、即时通讯、相册、集市等丰富强大的互联网功能体验,满足用户对社交、资讯、娱乐、交易等多方面的需求。
题目描述
小Q是PenguinQQ网站的管理员,他最近在进行一项有趣的研究——哪些账户是同一个人注册的。经过长时间的分析,小Q发现同一个人注册的账户名称总是很相似的,例如Penguin1,Penguin2,Penguin3……于是小Q决定先对这种相似的情形进行统计。
小Q定义,若两个账户名称是相似的,当且仅当这两个字符串等长且恰好只有一位不同。例如“Penguin1”和“Penguin2”是相似的,但“Penguin1”和“2Penguin”不是相似的。而小Q想知道,在给定的n 个账户名称中,有多少对是相似的。
为了简化你的工作,小Q给你的N 个字符串长度均等于L ,且只包含大小写字母、数字、下划线以及‘@’共64种字符,而且不存在两个相同的账户名称。
输入输出格式
输入格式:
第一行包含三个正整数N ,L ,S 。其中N 表示账户名称数量,L 表示账户名称长度,S 用来表示字符集规模大小,它的值只可能为2或64。
若S 等于2,账户名称中只包含字符‘0’和‘1’共2种字符;
若S 等于64,账户名称中可能包含大小写字母、数字、下划线以及‘@’共64种字符。
随后N 行,每行一个长度为L 的字符串,用来描述一个账户名称。数据保证N 个字符串是两两不同的。
输出格式:
仅一行一个正整数,表示共有多少对相似的账户名称。
说明:
| 测试点编号 | N | L | S |
|---|---|---|---|
| 1 | 50 | 10 | 64 |
| 2 | 500 | 100 | 64 |
| 3 | 3000 | 100 | 2 |
| 4 | 3000 | 100 | 64 |
| 5 | 30000 | 50 | 2 |
| 6 | 30000 | 50 | 64 |
| 7 | 30000 | 200 | 2 |
| 8 | 30000 | 200 | 64 |
| 9 | 30000 | 200 | 2 |
| 10 | 30000 | 200 | 64 |
果然我还是太naive
思路:枚举哪一位不同,取左边和右边的hash值进行比较统计
hash值先预处理
复杂度:\(O(nlognL)\)
然而这个题大家都用的是自动溢出取模,我并不知道说明时候该用这个。之前等价表达式用被卡出shi来
Code:
#include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;
const int N=30010;
const ll mod=1e9+7;
const ll base=233;
pair <ll,ll> dx[N];
char c[N][203];
int n,l,s,ans;
ll f1[N][203],f2[N][203];
int main()
{
scanf("%d%d%d",&n,&l,&s);
for(int i=1;i<=n;i++)
scanf("%s",c[i]+1);
ll t=1;
for(int j=1;j<=l;j++)
{
for(int i=1;i<=n;i++)
f1[i][j]=(f1[i][j-1]+t*c[i][j])%mod;
t=(t*base)%mod;
}
t=1;
for(int j=l;j>=1;j--)
{
for(int i=1;i<=n;i++)
f2[i][j]=(f2[i][j+1]+t*c[i][j])%mod;
t=(t*base)%mod;
}
for(int i=1;i<=l;i++)
{
for(int j=1;j<=n;j++)
{
dx[j].first=f1[j][i-1];
dx[j].second=f2[j][i+1];
}
sort(dx+1,dx+1+n);
int cnt=0;
for(int j=1;j<=n;j++)
{
if(dx[j]==dx[j-1]) cnt++;
if(dx[j]!=dx[j-1])
{
ans+=(cnt-1)*cnt/2;
cnt=1;
}
}
ans+=(cnt-1)*cnt/2;
}
printf("%d\n",ans);
return 0;
}
2018.7.25
洛谷 P4503 [CTSC2014]企鹅QQ 解题报告的更多相关文章
- 洛谷$P4503\ [CTSC2014]$企鹅$QQ$ 哈希
正解:哈希 解题报告: 传送门$QwQ$ 直接$O(len)$枚举哪一位,然后把这一位删了重新拼接起来,存桶里查下就成 $over$? 主要的难点大概在卡哈希+卡常$QAQ$ #include< ...
- [洛谷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) ...
- Luogu P4503 [CTSC2014]企鹅QQ(字符串哈希)
P4503 [CTSC2014]企鹅QQ 题面 题目背景 \(PenguinQQ\) 是中国最大.最具影响力的 \(SNS(Social Networking Services)\) 网站,以实名制为 ...
- 【题解】P4503 [CTSC2014]企鹅QQ(哈希)
[题解]P4503 [CTSC2014]企鹅QQ(哈希) 考虑这样一种做法,将每个字符串的删去某个字符的新字符串的哈希值存下来,然后最后\(sort\)一遍双指针统计每个值相同的数的个数\(x\),这 ...
- 字符串Hash || BZOJ 3555: [Ctsc2014]企鹅QQ || P4503 [CTSC2014]企鹅QQ
题面:[CTSC2014]企鹅QQ 题解:无 代码: #include<iostream> #include<cstring> #include<cstdio> # ...
- 洛谷_Cx的故事_解题报告_第四题70
1.并查集求最小生成树 Code: #include <stdio.h> #include <stdlib.h> struct node { long x,y,c; ...
- 洛谷 P2317 [HNOI2005]星际贸易 解题报告
P2317 [HNOI2005]星际贸易 题目描述 输入输出格式 输入格式: 输出格式: 如果可以找到这样的方案,那么输出文件output.txt中包含两个整数X和Y.X表示贸易额,Y表示净利润并且两 ...
- 洛谷 P3802 小魔女帕琪 解题报告
P3802 小魔女帕琪 题目背景 从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼. 帕琪能熟练使用七种属性(金.木.水.火.土.日.月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从 ...
随机推荐
- DDD实战成绩管理---需求分析
需求的分析我们采用四色模型.从用户故事中找出MI,然后围绕MI找出其中的role,ppt,des.本次先对两个优先级最高的用户故事进行四色模型建模. 1.用户故事一建模:作为教务处老师,我要建立教学班 ...
- (转载)C#提取汉字拼音首字母的方法
今天突然要用到提取汉字拼音首字母的功能,去网上找了找,发现没有几个好用的,决定自己写一个,效果还不错,发出来大家一起研究下,分享给大家!直接入主题: 1.首先对编码进行定义 #region 编码定义 ...
- iframe ie低版本 横向滚动条的解决办法
吐槽下百度,在百度搜这个问题都是渣渣,谷歌直接就出来了,记录一下 设置Frame时,有一属性是scrolling="yes/no/auto",IE6的mozilla都支持,或许对a ...
- jenkins 入门教程
jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java, ...
- selenium自动化之加载浏览器的配置文件
做seleniumUI自动化关于选用哪个浏览器方面,对于我来说,火狐浏览器只是用于定位元素,因为有firebug(注意高版本的火狐已经安装不了这个插件了),而真正执行自动化脚本用的是谷歌,感觉谷歌的速 ...
- Vue学习计划基础笔记(五) - 表单输入绑定、组件基础
表单输入绑定.组件基础 目标: 熟练掌握vue中表单的处理方式 对之前学习的内容简单回顾一下,并写一个实例,学以致用(最好脱离文档) vue中表单的处理方式 vue中表单的处理使用了v-model指令 ...
- Siki_Unity_2-4_UGUI_Unity5.1 UI 案例学习
Unity 2-4 UGUI Unity5.1 UI 案例学习 任务1-1:UGUI简介 什么是GUI: 游戏的开始菜单 RPG游戏的菜单栏.侧边栏和功能栏(比如背包系统.任务列表等) 设计用来控制移 ...
- Kibana TypeError : Object #<GlobalState> has no method 'setDefaults'
在windows server中装完elasticsearch和kibana后,elasticsearch能正常访问(http://localhost:9200): 而访问kibana的地址(http ...
- 如何把node更新到最新的稳定版本
先装n,再用n把node升级到最新稳定版 $ npm install -g n $ n stable
- eclipse启动一闪而退
eclipse启动一闪而退 打开eclipse,启动画面一闪而过退出. 解决方法: 以下每一步结束都重启eclipse一下,看能不能正常启动. 1. 在C:/WINDOWS/system32 系统文件 ...