BZOJ3555: [Ctsc2014]企鹅QQ
【传送门:BZOJ3555】
简要题意:
给出n个字符串长度为m,给出字符串的字符种数,求出相似的字符串个数
相似字符串的定义为:相同位置上两个字符串有且只有一个字符不相同时,两个字符串相似
题解:
乱搞搞,因为题目描述中说明会给出字符种数,就把各种字符按照出现的顺序编一下号,然后我就想成是(字符种数+1)进制来做,先处理一下前缀和,后缀和,然后枚举i,表示第i位不同,那么我们就先忽略第i位的字符,然后保存左边的字符串和右边的字符串(用(字符种数+1)进制来表示),然后按照左边的大小排序,左边相同时,按照右边的大小排序,然后就判断左右都相等的字符串的个数
注意假设当前我们得到了有x个字符串是相等的时候,那么相似的个数为x*(x-1)/2
题目20s,19s跑过去,RP++
参考代码:
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; typedef long long LL; char st[210]; LL l[31000][210]; LL r[31000][210]; struct node {LL l,r; }cnt[31000]; LL cc[210]; int cmp(const void *xx,const void *yy) {node n1=*(node *)xx;node n2=*(node *)yy;if(n1.l<n2.l) return -1;if(n1.l>n2.l) return 1;if(n1.r<n2.r) return -1;if(n1.r>n2.r) return 1;return 0; } int main() {int n,m,d;scanf("%d%d%d",&n,&m,&d);memset(cc,0,sizeof(cc));int len=0;for(int i=1;i<=n;i++){scanf("%s",st+1);for(int j=1;j<=m;j++) if(cc[st[j]]==0) cc[st[j]]=++len;l[i][0]=0;r[i][m+1]=0;for(int j=1;j<=m;j++) l[i][j]=l[i][j-1]*(d+1)+cc[st[j]];for(int j=m;j>=1;j--) r[i][j]=r[i][j+1]*(d+1)+cc[st[j]];}int ans=0;for(int i=1;i<=m;i++){for(int j=1;j<=n;j++) cnt[j].l=l[j][i-1],cnt[j].r=r[j][i+1];qsort(cnt+1,n,sizeof(node),cmp);int dd=1;for(int j=2;j<=n;j++){if(cnt[j].l==cnt[j-1].l&&cnt[j].r==cnt[j-1].r) dd++;else{ans+=dd*(dd-1)/2;dd=1;}}ans+=dd*(dd-1)/2;}printf("%d\n",ans);return 0; }
转载于:https://www.cnblogs.com/Never-mind/p/7878869.html
BZOJ3555: [Ctsc2014]企鹅QQ相关推荐
- 【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)网站,以实名制为基础,为用户提供日志.群.即 ...
- 【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希
传送门 题目分析 题意即求有多少对字符串只相差一个字符,枚举删除每个字符后的哈希, 看有多少相等即可. 比如有如下字符串:$Sd123$,其中S部分的哈希值为H,删除的是d,则原字符串的哈希值为$$( ...
- 【CTSC2014】【BZOJ3555】企鹅QQ
Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大 ...
- 【bzoj3555】[Ctsc2014]企鹅QQ
题目描述: PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大的互联网功能 ...
- luoguP4503 [CTSC2014]企鹅QQ hash
既然只有一位的不同,那么我们可以枚举这一位.... 我们只需要快速地计算去掉某一位的$hash$值.... 由于$hash(S) = \sum s[i] * seed^i$,因此去掉第$i$位的权值只 ...
- 【BZOJ3555】企鹅QQ,第一次正确的使用哈希A题
Time:2016.08.17 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 夏令营时做的题,一直没发题解 比较简单的思路是枚举每一位,然后看去掉这一位后有多少相同的串 关键是怎么 ...
- BZOJ 3555 [CTSC2014] 企鹅QQ Hash
Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大 ...
最新文章
- Java Review - 并发编程_DelayQueue原理源码剖析
- kafka-0.10.2.1:Producer生产时无法自动创建Topic
- fscanf简单使用
- 同事都说有SQL注入风险,我非说没有
- 检测到 LoaderLock Message Microsoft.DirectX.dll”正试图在 OS 加载程序锁内执行托管代码。...
- 朋友圈9宫格留白_九宫格招聘拼图图片
- iscsi:IO操作流程(四)
- 三角函数常用公式一篇汇
- bootstrap-toastr 消息通知插
- 微信公众平台版面设计需要服务器,谈谈微信公众号如何快速在线排版设计好看又实用的方法...
- 阿里云系统盘扩容及数据盘分区、格式化分区、挂载、取消挂载
- 笔记本电脑无法连接WiFi怎么办?
- UVA 10499 正义的土地
- 红孩儿编辑器的模块设计15
- 洛谷P3373 线段树2(乘法加法lazytag)
- 电话+电视+网络=“三位一体”?
- 192.168.8.1手机登陆_192.168.8.1登录入口上网设置
- oracle截取日期函数
- pyltp安装的一系列过程
- pass在c语言中的作用,Python语句中pass语句有什么作用?浅谈pass语句的用法
热门文章
- 荣耀linux怎么安装双系统,双系统怎么装?
- oracle tabs作用,Oracle 中 table 函数的应用浅析
- python几多级证书_Openssl 生成多级证书
- python通过下载链接下载_Python根据URL地址下载文件——wget
- P1460 健康的荷斯坦奶牛 Healthy Holsteins (简单的dfs)
- 任意进制转化 函数 模板(一)
- class com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$Text
- BSS段 data段 text段 堆heap 和 栈stack
- HTML5 中的下载简化处理
- 极限学习机和支持向量机_极限学习机I