【哈希和哈希表】图书管理

题目描述

图书管理是一件十分繁杂的工作,在一个图书馆中每天都会有许多新书加入。为了更方便的管理图书(以便于帮助想要借书的客人快速查找他们是否有他们所需要的书),我们需要设计一个图书查找系统。
该系统需要支持 2 种操作:

  • add(s) 表示新加入一本书名为 s 的图书。
  • find(s) 表示查询是否存在一本书名为 s 的图书。

输入

第一行包括一个正整数 n(n≤30000),表示操作数。 以下n行,每行给出 2 种操作中的某一个指令条,指令格式为:
add s
find s
在书名s与指令(add,find)之间有一个隔开,我们保证所有书名的长度都不超过200。可以假设读入数据是准确无误的。

输出

对于每个 find(s) 指令,我们必须对应的输出一行 yes 或 no,表示当前所查询的书是否存在于图书馆内。
注意:一开始时图书馆内是没有一本图书的。并且,对于相同字母不同大小写的书名,我们认为它们是不同的。

【题解】:

  利用链式前向星来模拟hash表的链,同时使用了双hash结构,代码是抄袭书本的。。。。

 #include<bits/stdc++.h>
using namespace std;
const int N = 3e5+;
const int Mod1 = 1e6+;
const int Mod2 = 1e6+;
const int p1 = ;
const int p2 = ;
int cnt = , Next[N+],Head[Mod2+],W[N];
void Insert(int x,int y ){
Next[++cnt] = Head[x] ;
Head[x] = cnt ;
W[cnt] = y ;
}
bool Query(int x,int y){
for(int i=Head[x];i;i=Next[i]){
if( W[i] == y ) return true;
}
return false ;
}
int main()
{
ios_base :: sync_with_stdio(NULL);
cin.tie(),cout.tie();
int n;
char op[],s[];
cin >> n ;
while (n--) {
cin >> op ;
cin.getline(s,sizeof(s));
int len = strlen(s);
long long sum1 = ,sum2 = ;
for(int i=;i<len;i++){
sum1 = ( sum1 * p1 + s[i] ) % Mod1;
sum2 = ( sum2 * p2 + s[i] ) % Mod2;
}
if ( op[] == 'a' ){
Insert(sum1,sum2);
}else{
if( Query(sum1,sum2) ){
printf("yes\n");
}else{
printf("no\n");
}
}
}
return ;
}

图书管理

【hash表】图书管理的更多相关文章

  1. 图书管理(Loj0034)+浅谈哈希表

    图书管理 题目描述 图书管理是一件十分繁杂的工作,在一个图书馆中每天都会有许多新书加入.为了更方便的管理图书(以便于帮助想要借书的客人快速查找他们是否有他们所需要的书),我们需要设计一个图书查找系统. ...

  2. day 47 Django 4的简单应用 创建简单的图书管理 (单表的增删改查)

    前情提要  Django  已经学了大半.. 很多东西已经能够使用在生产环境当中 一:模糊查询 二:单表删除 三:单表修改 四:图书管理 图书管理操作 视图结构 A:路由层 A :配置路由文件 参数解 ...

  3. PHP数组/Hash表的实现/操作、PHP变量内核实现、PHP常量内核实现 - [ PHP内核学习 ]

    catalogue . PHP Hash表 . PHP数组定义 . PHP变量实现 . PHP常量实现 1. PHP Hash表 0x1: 基本概念 哈希表在实践中使用的非常广泛,例如编译器通常会维护 ...

  4. oracle 表空管理方式(LMT)、ASSM段管理方式、一级位图块、二级位图块、三级位图块。

    今天是2013-12-16,今天和明天是我学习oracle生涯中一个特殊的日子.今天晚上进行了一下表空间管理方式的学习,在此记录一下笔记. 对于oracle数据库最小i/0单位是数据块,最想分配空间单 ...

  5. Hash表

    Hash表 Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组.链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字 ...

  6. java数据结构之hash表

    转自:http://www.cnblogs.com/dolphin0520/archive/2012/09/28/2700000.html Hash表也称散列表,也有直接译作哈希表,Hash表是一种特 ...

  7. hash表的建立和查找

    (1)冲突处理方法为:顺次循环后移到下一个位置,寻找空位插入.(2)BKDE 字符串哈希unsigned int hash_BKDE(char *str){/* 初始种子seed 可取31 131 1 ...

  8. 66、django之模型层(model)--多表相关操作(图书管理小练习)

    前面几篇随笔的数据库增删改查操作都是在单表的操作上的,然而现实中不可能都是单表操作,更多的是多表操作,一对一,一对多,多对多的表结构才是我们经常需要处理的,本篇将带我们了解多表操作的一些相关操作.也会 ...

  9. django之模型层(model)--多表相关操作(图书管理小练习)

    前面几篇随笔的数据库增删改查操作都是在单表的操作上的,然而现实中不可能都是单表操作,更多的是多表操作,一对一,一对多,多对多的表结构才是我们经常需要处理的,本篇将带我们了解多表操作的一些相关操作.也会 ...

随机推荐

  1. 什么是跨平台性?原理是什么?JVM

    所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行. 实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行 ...

  2. win10下检查nvidia显卡支持的cuda版本

    1.首先将[C:\Program Files\NVIDIA Corporation\NVSMI]添加至系统环境变量[path]中: 2.在powershell中使用命令[nvidia-smi],即可看 ...

  3. Python3+RobotFramewok 循环判断以及Evaluate用法(三)

    本章主要介绍RF的循环,判断以及关键字Evaluate. 1. for循环 在RF中通过 :FOR 编写循环 :FOR ${i} in range 10 log ${i} @{list} create ...

  4. PCL基础

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=264 许可 建议每一个文件包含一个描述代码作者的许可,这对于用户了解使用该代 ...

  5. vue 面试题(文章末尾还有其他链接)

    https://segmentfault.com/a/1190000016344599

  6. WdatePicker没有效果怎么办

    1:如果WdatePicker没有效果时间输入框 或报 invalid property:firstDayOfWeek 个错误. 2:网上解决方法有很多,但很多都不规范. 解决方法:重新下载(下载地址 ...

  7. monkey 查找闪退页面的方法

    使用了命令 adb shell monkey  --pct-touch 100 -v -p  com.iBer.iBerAppV2  5000 >/Users/kaibinliu/Desktop ...

  8. spring boot系列(七)spring boot 使用mongodb

    1 pom.xml配置 增加包依赖:spring-boot-starter-data-mongodb <dependency> <groupId>org.springframe ...

  9. Paper Mark

    BigCowPeking的CSDN博客 https://blog.csdn.net/wfei101/article/category/7120809 Low Rank Structure of Lea ...

  10. 导出文档设置exportDocument

    <?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.4" ...