JZOJ 3870. 【NOIP2014八校联考第4场第1试10.19】单词检索(search)
Description
小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。
由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。
现在他向你求助,需要你编写程序完成这项艰巨的任务。
Input
第1行3个正整数N,M,L,表示文章的数目,单词至少出现在M篇文章中和每个单词的长度。
接下来N行,每行一个字符串,表示一篇文章。
Output
仅一行,表示满足检索条件的单词数。
Sample Input
3 2 2
noip
istudycpp
imacppstudent
Sample Output
5
【样例解释】
这5个单词分别为:st,tu,ud,pp,cp。
Data Constraint
对于20%的数据有 1≤N,M≤101≤N,M≤10;
对于60%的数据有 1≤N,M≤1001≤N,M≤100;
对于100%的数据有 1≤N,M≤2000,L≤10001≤N,M≤2000,L≤1000。每篇文章长度不大于1000,均有小
写字母组成。
Solution
这题是典型的 字符串Hash ,开散列。
先枚举每篇文章,在枚举其中的每个单词,把单词转换成模意义下26进制,质数取 109+710^9+7 。
之后把这个数放进 Hash 表中,判断是否存在,达到m次即答案+1,上限取 2∗1062*10^6 。
枚举过程中注意边加边判断,总时间复杂度为 O(N∗(N−L))O(N*(N-L)) !
Code
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1002,M=N*N*2,mo=1e9+7;
int n,m,l,ans;
int f[M],g[M];
long long p[N],h[M];
char s[N];
inline int hash(int x)
{int y=x%M;while(h[y] && h[y]!=x) y=(y+1)%M;return y;
}
int main()
{scanf("%d%d%d",&n,&m,&l);for(int i=p[0]=1;i<l;i++) p[i]=p[i-1]*26%mo;n++;while(--n){scanf("%s",s+1);int len=strlen(s+1);long long sum=0;for(int i=1;i<l;i++) sum=(sum+p[l-1-i]*s[i])%mo;for(int i=l;i<=len;i++){sum=(sum+mo-p[l-1]*s[i-l]%mo)%mo;sum=(sum*26+s[i])%mo;int k=hash(sum);h[k]=sum;if(g[k]!=n){if(++f[k]==m) ans++;g[k]=n;}}}printf("%d",ans);return 0;
}
JZOJ 3870. 【NOIP2014八校联考第4场第1试10.19】单词检索(search)相关推荐
- JZOJ 3871. 【NOIP2014八校联考第4场第1试10.19】无聊的游戏(game)
Description 学校的运动会开始了,体能很菜的小可可没报任何比赛项目,于是和同学们玩一个十分无聊的游戏. 游戏在一个由 n∗nn*n 个方格组成的正方形棋盘上进行,首先在每个方格上均匀随机地填 ...
- JZOJ 3875. 【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)
Description 在遥远的S星系中一共有N个星球,编号为1-N.其中的一些星球决定组成联盟,以方便相互间的交流. 但是,组成联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧道.每条 ...
- 2017.08.20【NOIP提高组】模拟赛B组 【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)
####Description 在遥远的S星系中一共有N个星球,编号为1-N.其中的一些星球决定组成联盟,以方便相互间的交流. 但是,组成联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧 ...
- 2017.08.20【NOIP提高组】模拟赛B组 【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)...
####Description 在遥远的S星系中一共有N个星球,编号为1-N.其中的一些星球决定组成联盟,以方便相互间的交流. 但是,组成联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧 ...
- 反抗希碧拉系统续(NOIP2014八校联考第3场第1试10.4)
看了题解才会做的题..感觉有点思想有点妙就来写一发吧... 题意简版 给出一个特殊的正则表达式,有如下递归定义: 元素:="["+字符集+"]",表示匹配字符集 ...
- JZOJ 3853. 【NOIP2014八校联考第2场第2试9.28】帮助Bsny(help)
Description Bsny的书架乱成一团了,帮他一下吧! 他的书架上一共有n本书,我们定义混乱值是连续相同高度书本的段数.例如,如果书的高度是30,30,31,31,32,那么混乱值为3:30, ...
- JZOJ 3852. 【NOIP2014八校联考第2场第2试9.28】单词接龙(words)
Description Bsny从字典挑出N个单词,并设计了接龙游戏,只要一个单词的最后两个字母和另一个单词的前两个字母相同,那么这两个单词就可以有序的连接起来. Bsny想要知道在所给的所有单词中能 ...
- 计算机网络八校联考,八校联考排名出炉!前十名华师一独占八席,在武汉上华师一有多难?...
原标题:八校联考排名出炉!前十名华师一独占八席,在武汉上华师一有多难? 近日,湖北省内高中有名的阶段性考试"八校联考"成绩出炉,这也是湖北省高三复课后的第一次线下全省统一考试. 小 ...
- JZOJ 4238. 【五校联考5day2】纪念碑
Description 2034年,纪念中学决定修建校庆100周年纪念碑,作为杰出校友的你被找了过来,帮校方确定纪念碑的选址. 纪念中学的土地可以看作是一个长为n,宽为m的矩形.它由n* m个1*1的 ...
最新文章
- 使用 .NET 框架轻松开发完美的 Web 窗体控件
- 哈希一致性、哈希取余、自定义轮询分片的比较
- 大国AI竞赛中国忙赶超,但美国仍主导全球AI芯片设计
- final、finally、finalize的区别
- python一行代码实现99乘法表_一行代码实现九九乘法表
- Spring Boot学习笔记-进阶(3)
- Label显示多行文本总结
- Initramfs应用问题记录
- NFS 服务安全加固
- mysql限制用户只能访问指定数据库
- 你还在全量加载iView么?试试手动配一个吧
- Spring中的循环依赖(单例)
- 仿王者荣耀HTML示例代码
- 计算机网络基础知识框架
- 最小割的必须割边和可行割边
- ubuntu设置MySQL密码
- 一键自动生成字幕、制作双语字幕,懒人必备
- 字符串中Emoji表情处理
- 跨平台框架这么多, 老夫无可奈何!
- 计算机储存配置信息,怎么看电脑配置信息
热门文章
- numpy.random.rand使用详解
- 吴恩达 coursera AI 专项五第三课(下)总结+作业答案
- Git学习笔记:分支管理(2)
- CentOS 6.X 关闭不需要的 TTY 方法
- IDE (Integrated Development Environment) 集成开发环境
- 【云炬大学生创业基础笔记】第1章第3节 什么是创业测试
- 【云炬大学生创业基础笔记】第1章第2节测试
- 云炬60s看世界20211119
- [云炬python3玩转机器学习笔记] 3-6Numpy数组和矩阵的合并和分割
- [云炬python3玩转机器学习笔记] 2-3监督学习、非监督学习、半监督学习和增强学习