信奥一本通——哈希 里的例题2

题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1456

题目描述:两个命令,一个是进一本名字为s的图书,一个是找现有的图书里有没有名字为s的图书,如果有输出 “噎死” “yes”,没有输出 “no” 。

这道题基础思路是用哈希,将书名的字符串转换成相应的哈希值,再进行查找。

但是

书名的长度最长200,这么大的字符串哈希值看着都腿软。

那怎么办呢?

在c++中有一种数据结构叫vector,是一个动态2维数组,可以将一维的数向下扩充成2维(甚至三维)。

那么,我们就可以在哈希的基础上,用vector进行进一步判断了。

将某串的哈希值模上个质数,然后将原串存在相应 vector [哈希值] 的地方

就像这样:

v[we/*相应哈希值*/].push_back(a);

下面完整代码:

 1 #include<bits/stdc++.h>
2 using namespace std;
3 const int b=31;//工具质数
4 int we,q;
5 string a,c;
6 vector<string> v[30000];//必须是string类型的
7 int main(){
8 int n;
9 cin>>n;
10 for(int i=0;i<n;i++){
11 cin>>c;
12 if(c=="add"){
13 getline(cin,a);//因为有空格,所以用这个
14 we=1;
15 for(int j=0;j<a.size();j++){
16 we=(we*b+(long long)a[j])%23333;//求哈希值
17 }
18 v[we].push_back(a);//将字符串存进去
19 }
20 if(c=="find"){
21 getline(cin,a);
22 we=1;
23 for(int j=0;j<a.size();j++){
24 we=(we*b+(long long)a[j])%23333;
25 }//同上
26 q=0;
27 for(int j=0;j<(int)v[we].size();j++){
28 if(v[we][j]==a){//判断字符串是不是相等
29 cout<<"yes"<<endl;
30 q=1;
31 break;//这里可是坑坏了,如果不写break它会打出很多"yes",要不然就在上面查重
32 }
33 }
34 if(q==0){//变量控制
35 cout<<"no"<<endl;
36 }
37 }
38 }
39 }

完美结束

最新文章

  1. ajax向后台传递数组
  2. C#中的可空值类型
  3. IoC实践--用Autofac实现MVC5.0的IoC控制反转方法
  4. Mount NAS Storage in Linux Overview 转载
  5. Less/Sass编译工具
  6. CentOS下启动Tomcat
  7. POJ3295——Tautology
  8. TreeList的VisibleNodesCount,Noes.Count,AllNdoesCount以及焦点节点的删除
  9. input输入限制,只允许输入数字和“.”,长度不得超过20
  10. React点击操作自动定位到另外一个元素
  11. Using Dispatcher
  12. word搜狗输入失效切换方法
  13. 在linux中,如何增加、修改、删除、暂停和冻结用户名
  14. 关于作用域范围Scope
  15. python编译模块为2禁制
  16. 统计学习方法:支撑向量机(SVM)
  17. 如何在 React Native 中写一个自定义模块
  18. PAT——1058. 选择题
  19. ssh的发展历程与基本原理
  20. linux命令dmesg查看进程被杀死原因

热门文章

  1. Hibernate的一级缓存和二级缓存有什么区别?
  2. kafka unclean 配置代表啥,会对 spark streaming 消费有什么影响?
  3. IOC——Spring的bean的管理(注解方式)
  4. Netty学习摘记 —— 再谈ChannelHandler和ChannelPipeline
  5. canvas系列教程07-canvas动画基础1
  6. java中Number Type Casting(数字类型强转)的用法
  7. es5语法下,javascript如何判断函数是new还是()调用
  8. box-shadow 阴影的高级用法,多个阴影叠加
  9. 攻防世界——gif
  10. spring-bean依赖注入-03