【题解】P4503 [CTSC2014]企鹅QQ(哈希)
2024-09-05 10:43:28
【题解】P4503 [CTSC2014]企鹅QQ(哈希)
考虑这样一种做法,将每个字符串的删去某个字符的新字符串的哈希值存下来,然后最后\(sort\)一遍双指针统计每个值相同的数的个数\(x\),这个\(x\)对答案的贡献是\({x \choose 2}\)
//@winlere
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; typedef long long ll;
inline int qr(){
register int ret=0,f=0;
register char c=getchar();
while(c<48||c>57)f|=c==45,c=getchar();
while(c>=48&&c<=57) ret=ret*10+c-48,c=getchar();
return f?-ret:ret;
}
const int maxs=2e2+5;
int n,len,S,cnt;
char c[maxs];
int ha1[maxs],ha2[maxs];
int s1[maxs],s2[maxs];
int base1[maxs],base2[maxs];
const int mod1=998244353,mod2=993244853;
const int seed1=233,seed2=666;
pair<int,int> data[200*30001];
inline void insert(const char*c){
for(int t=1;t<=len;++t) ha1[t]=(1ll*ha1[t-1]*seed1+c[t])%mod1,ha2[t]=(1ll*ha2[t-1]*seed2+c[t])%mod2;
for(int t=len;t;--t) s1[t]=(1ll*s1[t+1]*seed1+c[t])%mod1,s2[t]=(1ll*s2[t+1]*seed2+c[t])%mod2;
for(int t=1;t<=len;++t) data[++cnt]={(0ll+ha1[t-1]+1ll*base1[t]*s1[t+1]%mod1)%mod1,(0ll+ha2[t-1]+1ll*base2[t]*s2[t+1]%mod2)%mod2};
}
int main(){
base1[0]=base2[0]=1;
n=qr(); len=qr(); S=qr();
for(int t=1;t<=len;++t) base1[t]=1ll*base1[t-1]*seed1%mod1,base2[t]=1ll*base2[t-1]*seed2%mod2;
for(int t=1;t<=n;++t) scanf("%s",c+1),insert(c);//cout<<(c+1)<<endl;
sort(data+1,data+cnt+1);
ll ans=0;
for(int t=1,r=1;t<=cnt;t=++r){
while(data[t]==data[r+1]) ++r;
if(r>t) ans=ans+((r-t+1LL)*(r-t)>>1);
}
printf("%lld\n",ans);
return 0;
}
最新文章
- 【IOS笔记】Event Delivery: The Responder Chain
- 控制台应用程序中Main函数的args参数
- 关于Struts2的客户端校验的FreeMarker template error!
- override和new的区别【摘】
- SVN的使用(转发)
- php遍历数据库
- 腾讯云部署Flask应用
- ThinkPHP的连贯操作方法中field方法
- iOS推送跳转AppDelegate跳转VC
- ngrok完成内网映射外网
- ImageMagick 使用经验
- Java Scanner 类
- JavaBean初识
- 【php增删改查实例】第二十六节 - 个人详情页制作
- Python中map函数
- CSS 页面布局、后台管理示例
- Go Code Review Comments 译文(截止2018年7月27日)
- python 协程库gevent学习--gevent源码学习(二)
- Windows7系统下OpenCV2.4.4+PCL1.6.0+SSBA3.0+VS2010 IDE32环境下编译和安装以实现Sfm和PCL点云数据可视化
- TCPdump指定时间或者指定大小进行循环抓取报文
热门文章
- CNN如何识别一幅图像中的物体
- Python--day72--json内容回顾
- HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法
- H3C NAT Server配置举例
- ThinkPHP 模版中的内置标签
- python基础九之函数
- js基础——正则表达式
- mysql导出csv/sql/newTable/txt的方法,mysql的导入txt/sql方法...mysql备份恢复mysqlhotcopy、二进制日志binlog、直接备份文件、备份策略、灾难恢复.....................................................
- Python中&;、^与and、or
- apply call 用法