#10034.「一本通 2.1 例 2」图书管理-哈希(双哈希思想)+邻接表
时间:2019-10-19
本文章向大家介绍#10034.「一本通 2.1 例 2」图书管理-哈希(双哈希思想)+邻接表,主要包括#10034.「一本通 2.1 例 2」图书管理-哈希(双哈希思想)+邻接表使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
样例
样例输入
4
add Inside C#
find Effective Java
add Effective Java
find Effective Java
样例输出
no
yes
数据范围与提示
n<=30000
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 using namespace std;
6 typedef long long ll;
7 const int mod1=1e6+3,mod2=1e6+9,p1=47,p2=79,N=30020;
8 int k,to[N],endd[N];
9 int first[mod1+20];//注意poi数组开的大小范围,不是N
10 char a[10],b[220];
11
12 void add(int x,int y)//邻接表实现该操作
13 {
14 to[k]=first[x];
15 first[x]=k;
16 endd[k]=y;
17 k++;
18 }
19
20 int query(int x,int y)
21 {
22 for(int i=first[x]; i!=-1; i=to[i])
23 {
24 if(endd[i]==y)
25 return 1;//该字符串找到了
26 }
27 return 0;
28 }
29
30 int main()
31 {
32 int t;
33 scanf("%d",&t);
34 memset(to,-1,sizeof(to));//最好用-1进行清空,因为有时侯点会从0开始,会导致多存
35 k=1;//k最好是从1开始存,否则容易出错
36 while(t--)
37 {
38 scanf("%s",a);
39 gets(b);
40 int lb=strlen(b);
41 int sum1=0,sum2=0;
42 for(int i=0; i<lb; i++) //计算出每个书名的哈希值
43 {
44 //双哈希思想,减小误差
45 sum1=(sum1*p1+b[i])%mod1;
46 sum2=(sum2*p2+b[i])%mod2;
47 }
48 if(strcmp(a,"add")==0)//add操作,该操作单向即可,不需要add(sum2,sum1)
49 add(sum1,sum2);
50 else //寻找是否出现过该书
51 {
52 int w=query(sum1,sum2);
53 if(w)
54 printf("yes\n");
55 else
56 printf("no\n");
57 }
58 }
59 return 0;
60 }
原文地址:https://www.cnblogs.com/OFSHK/p/11703665.html
- Java基础-day07-知识点相关题-自定义数据类型;ArrayList
- windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数)
- 本人为巨杉数据库(开源NoSQL)写的C#驱动,支持Linq,全部开源,已提交github
- 最近的几个技术问题总结和答疑(九)(r10笔记第16天)
- AgileEAS.NET SOA中间件平台更新日志 2015-04-28
- 【Go 语言社区】Golang语言操作redis连接池的方法
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
- 关于Flashback的小测试(r10笔记第15天)
- 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
- 【Go 语言社区】Golang语言获取系统环境变量的方法
- Oracle中的PUBLIC(r10笔记第14天)
- Data Guard高级玩法:通过闪回恢复switchover主库 (r10笔记第13天)
- WinForm/MIS项目开发之中按钮级权限实践
- 恢复控制文件避免使用resetlogs选项 (r10笔记第12天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 网站图标开发指南
- 过滤器 & 监听器的学习
- 会话技术 & JSP 的学习
- 2万字,实战 Docker 部署:完整的前后端,主从热备高可用服务!!
- http & request & response的学习
- JavaScript 错误处理大全【建议收藏】
- Java8 用 Stream 快速实现List转Map 、分组、过滤等操作
- swoole框架异常处理
- 使用composer本地开发项目
- GDAL数据集写入空间坐标参考
- html & CSS & JavaScript的学习
- 打卡群刷题总结0824——电话号码的字母组合
- 打卡群刷题总结0825——括号生成
- Ajax与Json的学习
- pytest文档48-切换环境(pytest-base-url)