【题解】 bzoj3555: [Ctsc2014]企鹅QQ (字符串Hash)
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)的更多相关文章
- 【BZOJ-3555】企鹅QQ 字符串Hash
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1545 Solved: 593[Submit][Statu ...
- 【bzoj3555】[Ctsc2014]企鹅QQ 字符串hash
题目描述 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大的互联网功能体 ...
- BZOJ3555 [Ctsc2014]企鹅QQ 【hash】
题目 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大的互联网功能体验, ...
- [BZOJ3555] [Ctsc2014]企鹅QQ(Hash)
传送门 可以枚举被删除的位置,然后用hash表判重,然而网上好多题解都是用 sort 判重的. 不知道为什么,int 总是过不了,换成 long long 或者是 unsigned long long ...
- bzoj3555: [Ctsc2014]企鹅QQ (Hash)
枚举每个分段的点,每次O(n)更新左边和右边的hash值 然后用双指针O(n)计算答案 #include<stdio.h> #include<string.h> #includ ...
- bzoj3555 [Ctsc2014]企鹅QQ——字符串哈希
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3555 很久以前就讲过哈希,但一直没写过题,所以这是哈希第一题! 哈希就是把一个字符串映射成一 ...
- bzoj3555: [Ctsc2014]企鹅QQ
将字符串hash.不难写.然而1.注意用longlong2.数组大小注意...3.似乎别人都用的unsigned long long ?. #include<cstdio> #includ ...
- Luogu 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: 2046 Solved: 749[Submit][Statu ...
随机推荐
- Ubuntu 14.04 安装caffe
仅支持CPU模式 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-ser ...
- [iOS]改变UIAlertController的标题、内容的字体和颜色
https://www.jianshu.com/p/51949eec2e9c 2016.03.23 22:36* 字数 272 阅读 37401评论 54喜欢 72 在开发中,弹出框是必不可少的,通常 ...
- pycharm设置pytest运行程序
- 我们为什么要使用List和Set(List,Set详解)
1.集合概述 类图 集合和数组的区别? 集合基本方法 集合特有的遍历方式? public static void main(String[] args) { //创建集合对象 Collection c ...
- semantic-ui 分段
分段:用于创建一组相关联的内容. 1.创建一个基础的分段 在class中加一个segment的class即可 <div class="ui segment"> < ...
- GANs (Generative Adversarial Networks)
#!/usr/bin/python2.7 #coding:utf-8 import tensorflow as tf import numpy as np import matplotlib.pypl ...
- HDU 3900 Unblock Me
题目:Unblock Me 链接:Here 题意:一个游戏,看图就基本知道题意了,特殊的是:1. 方块长度为3或2,宽度固定是1.2. 地图大小固定是6*6,从0开始. 3. 出口固定在(6,2).4 ...
- Java8 Stream实例--统计出所有含‘张’字的人员的平均年龄
package com.zhangxueliang.demo; import java.util.ArrayList; import java.util.List; import java.util. ...
- MyCat数据库中间件 - 分库
MyCat MyCat用于解耦分布式数据库与java,比如分库分表以后,需要查询某条数据时,需要java根据需要查的数据先计算去哪个库查,然而有了Mycat就不用自己计算怎么存储,怎么查询了.MyCa ...
- JQ remove()方法实现似收货地址逐一删除的效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...