[CTSC2014]企鹅QQ hash
题解:
通过观察可以发现,其实题目就是要求长度相等的字符串中有且只有1位字符不同的 ”字符串对“ 有多少。
因为数据范围不大, 所以考虑一种暴力至极的方法。
我们枚举是哪一位不同,然后通过hash验证,同时为了加速,我们先求出每一个字符串的前缀hash数组和后缀hash数组,
如果是枚举到第j位不同,我们就合并前缀hash[j-1]和后缀hash[j+1],然后判断是否相等即可。
因为是求点对,因此还要考虑组合数,所以我们判断的时候顺便求出组合数即可
// luogu-judger-enable-o2
#include<bits/stdc++.h>
using namespace std;
#define R register int
#define LL unsigned long long
#define AC 30010
#define ac 250
int n, m, k, ans;
LL H[AC][ac], G[AC][ac], tmp[AC];
char s[AC]; void cal(int x)//处理出2个整串的hash数组,然后再去除枚举的j并合并
{
for(R i = ; i <= m; i++) H[x][i] = H[x][i - ] * + s[i];
for(R i = m; i; i--) G[x][i] = G[x][i + ] * + s[i];
} void pre()
{
scanf("%d%d%d", &n, &m, &k);
for(R i = ; i <= n; i++)
{
scanf("%s", s + );
cal(i);
}
} void work()
{
int t;
for(R j = ; j <= m; j++)//枚举删掉哪位
{
for(R i = ; i <= n; i++)//获取每个串的hash值
tmp[i] = H[i][j-] * + G[i][j + ] * ;
sort(tmp + , tmp + n + );
t = ;
for(R i = ; i <= n; i++)//看有多少相同串,顺便统计组合数
if(tmp[i] == tmp[i - ]) ans += t, ++t;
else t = ;//不然就重置,如果有2个相同,显然不能只计一个,所以初始值为1 }
printf("%d\n", ans);
} int main()
{
// freopen("in.in", "r", stdin);
pre();
work();
// fclose(stdin);
return ;
}
[CTSC2014]企鹅QQ hash的更多相关文章
- BZOJ 3555: [Ctsc2014]企鹅QQ hash
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- 【BZOJ3555】[Ctsc2014]企鹅QQ hash
[BZOJ3555][Ctsc2014]企鹅QQ Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础, ...
- luoguP4503 [CTSC2014]企鹅QQ hash
既然只有一位的不同,那么我们可以枚举这一位.... 我们只需要快速地计算去掉某一位的$hash$值.... 由于$hash(S) = \sum s[i] * seed^i$,因此去掉第$i$位的权值只 ...
- 字符串Hash || BZOJ 3555: [Ctsc2014]企鹅QQ || P4503 [CTSC2014]企鹅QQ
题面:[CTSC2014]企鹅QQ 题解:无 代码: #include<iostream> #include<cstring> #include<cstdio> # ...
- [bzoj3555]企鹅QQ(hash)
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1645 Solved: 616[Submit][Statu ...
- bzoj3555: [Ctsc2014]企鹅QQ
将字符串hash.不难写.然而1.注意用longlong2.数组大小注意...3.似乎别人都用的unsigned long long ?. #include<cstdio> #includ ...
- 【BZOJ3555】 [Ctsc2014]企鹅QQ
BZOJ3555 [Ctsc2014]企鹅QQ Solution 只需要前缀Hash,然后考虑每一段的贡献就好了!!! 代码实现 #include<stdio.h> #include< ...
- 洛谷 P4503 [CTSC2014]企鹅QQ 解题报告
P4503 [CTSC2014]企鹅QQ 题目背景 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即 ...
- bzoj——3555: [Ctsc2014]企鹅QQ
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2617 Solved: 921[Submit][Statu ...
随机推荐
- Python 获取windows管理员权限办法
from __future__ import print_function import ctypes, sys, os def is_admin(): try: return ctypes.wind ...
- vs找不到lib以及编译的link过程中出现的问题
1.#pragma comment 程序中已经通过该语句完成lib库的引入,如果再在input里面添加lib库就会报错: 2.要在general的“导入外部库”的设置选项的目录下面添加引用到的lib库 ...
- OSG-简单模型控制
本文转至http://www.cnblogs.com/shapherd/archive/2010/08/10/osg.html 作者写的比较好,再次收藏,希望更多的人可以看到这个文章 互联网是是一个相 ...
- Linux命令应用大词典-第4章 目录和文件操作
4.1 pwd:显示(打印)当前工作目录路径 4.2 cd:更改工作目录路径 4.3 ls: 列出目录和文件信息: 4.4 dir:列出目录或文件信息: 4.5 dirs:显示目录列表: 4.6 to ...
- Java 语法基础
一 关键字 关键字: 其实就是某种语言赋予了特殊含义的单词 保留字: 其实就是还没有赋予特殊含义 但是准备日后要使用过的单词 二 标示符 标示符: 其实就是在程序中自定义的名词 比如类名, 变量名, ...
- Siki_Unity_0_Unity A计划直播视频
Unity A计划直播视频 2017-07-04直播 任务1:如何识别以招聘来招培训生的公司: 打着招聘的旗号帮培训机构找培训生 关键词:实训生 任务2:如何识别一个公司的好坏和规模大小: 猎聘(中高 ...
- FPGA学习-VGA接口
一般FPGA开发板的VGA会向用户暴露两共五个种接口,第一种是时序信号,用于同步传输和显示:第二种是色彩信号,用于随着时序把色彩显示到显示器上 时序接口 行同步信号-用于指示一行内像素的显示 场同步信 ...
- How Does Batch Normalization Help Optimization?
1. 摘要 BN 是一个广泛应用的用于快速稳定地训练深度神经网络的技术,但是我们对其有效性的真正原因仍然所知甚少. 输入分布的稳定性和 BN 的成功之间关系很小,BN 对训练过程更根本的影响是:它让优 ...
- Simple layout
body { padding: 0; margin: 0; overflow: hidden; } div { display: block; position: relative; } .c ...
- 新人学PHP,认为手动搭建环境而苦恼吗?这篇文章告诉你多简单!
本教程适用于初学PHP,想了解手动搭建PHP环境的童鞋. 一键环境和高手勿喷. 本教程以下列版本软件为例: 所需软件目录 我在这里的目录结构是(个人习惯) 安装与配置 apache 双击安装Apach ...