首页 > 其他分享 >开放寻址法模拟散列表

开放寻址法模拟散列表

时间:2023-10-30 11:07:22浏览次数:31  
标签:输出 include int scanf 列表 寻址 Yes null 模拟



文章目录

  • Question
  • Ideas
  • Code


Question

维护一个集合,支持如下几种操作:

I x,插入一个整数 x

Q x,询问整数 x
是否在集合中出现过;
现在要进行 N
次操作,对于每个询问操作输出对应的结果。

输入格式
第一行包含整数 N
,表示操作数量。

接下来 N
行,每行包含一个操作指令,操作指令为 I x,Q x 中的一种。

输出格式
对于每个询问指令 Q x,输出一个询问结果,如果 x
在集合中出现过,则输出 Yes,否则输出 No。

每个结果占一行。

数据范围
1≤N≤105

−109≤x≤109
输入样例:
5
I 1
I 2
I 3
Q 2
Q 5
输出样例:
Yes
No

Ideas

Code

// 开放寻址法模拟
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 200003, null = 0x3f3f3f3f;
int h[N];

// 能找到-》返回x的下标,找不到-》返回x应该插入的位置
int find(int x){
    int k = (x % N + N) % N;
    while(h[k] != x && h[k] != null){
        k ++;
        if (k > N) k = 0;
    }
    
    return k;
}

int main()
{
    int n;
    scanf("%d", &n);
    
    memset(h, 0x3f, sizeof h);
    
    while (n -- ){
        char op[2];
        scanf("%s", op);
        
        int x;
        scanf("%d", &x);
        int k = find(x);
        if (*op == 'I'){
            h[k] = x;
        }
        else{
            if (h[k] != null) puts("Yes");
            else puts("No");
        }
    }
    
    return 0;
}


标签:输出,include,int,scanf,列表,寻址,Yes,null,模拟
From: https://blog.51cto.com/u_14608932/8086424

相关文章

  • 数据结构之散列表与哈希函数初识
    一:概述一:为什么需要散列表*在我们的程序世界里,往往也需要在内存中存放这样一个“词典”,方便我们进行高效的查询和统计。*例如开发一个学生管理系统,需要有*通过输入学号快速查找对应学生的姓名的功能。*这里不必要每次都去查询数据库,而可以在内存中建立一个缓存表,这样做可以......
  • 如果后端返回上万条数据,前端如何渲染成长列表呢?
    使用虚拟列表   只对可见区域进行渲染,对非可见区域中的数据不渲染或部分渲染的技术,从而达到极高的渲染性能,虚拟列表其实是按需显示的一种实现。   虚拟列表一般包含三个组成部分:可视区域、列表渲染区域、真实列表区域。列表渲染区大于等于可视区。比如容器区域需要渲......
  • 【Qt6】列表模型——几个便捷的列表类型
    前面一些文章,老周简单介绍了在Qt中使用列表模型的方法。很明显,使用ItemModel在许多时候还是挺麻烦的——要先建模型,再放数据,最后才构建视图。为了简化这些骚操作,Qt提供了几个便捷类。今天咱们逐个看看。一、QListWidget 这厮对应的ListView,用来显示简单的列表。要添加列......
  • 列表包裹元组,指定元组中数字大小排序字段operator用法
    importoperatorsomelist=[(1,5,8),(6,2,4),(9,7,5)]somelist.sort(key=operator.itemgetter(0))print(somelist)#[(1,5,8),(6,2,4),(9,7,5)]somelist.sort(key=operator.itemgetter(1))print(somelist)#[(6,2,4),(1,5,8),(9,7,5)]somelist.sor......
  • MFC---常用控件(下)(列表控件、树控件、标签控件)
    列表控件CListCtrl常用属性设置:view->Report(报表方式)常用接口关联控件变量后,测试接口://设置风格样式 //LVS_EX_GRIDLINES网格 //LVS_EX_FULLROWSELECT选中整行 m_list.SetExtendedStyle(m_list.GetExtendedStyle() |LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT); //插......
  • CSP模拟57联测19_全球覆盖
    题面:赛时给我搞破防了,没有一点思路。Part1对于这四种神奇有病的操作,可以把\(x\)轴和\(y\)轴分开考虑,它们之间互不影响。最后答案就是\(x\)轴上的最长距离乘\(y\)轴上的最长距离。这样就把二维的问题拆分成了两个序列上的问题。现在问题变成了给定几个区间,可以取区间的......
  • 手把手教你:如何用Java多线程模拟银行叫号服务
    大家好,我是小米!今天,我将和大家一起探讨一个非常有趣的话题——Java多线程模拟银行叫号服务。这不仅是一个有趣的编程练习,还可以帮助我们更好地理解多线程编程和并发控制。在这篇文章中,我将带领大家一步步实现一个模拟银行叫号服务系统,包括三个窗口、按叫号顺序依次到窗口服务、每个......
  • 10.28 模拟赛小记
    梦熊10连测的第八个了。比赛地址写在亲前面的总结:因为下午班级合唱比赛,所以不太想打比赛,想去看演出的。鉴于我们第一个唱完,以及班主任说节目可以看到15:40,所以一直在玩上去的很晚。之后在机房继续看完了节目。所以本场打的还挺抽象。更加难评的是这竟然是我打的最好的一场(?),有......
  • 考场(NOIP2023模拟5联测26)
    T1题目好评,但是hanzelic小姐是大主播啊。对于\(a_1\)^\(a_2\)^\(a_3\)^\(a_4\)......来说,要让\(a_2\)^\(a_3\)^\(a_4\)最小。啊,为什么我觉得运算顺序不会对这个题造成影响啊QAQ,我是菜狗QAQ。奥,我的意思是让所有次幂乘起来最小,因为\(x*y\)一定小于等于\(x^y......
  • C# Post 模拟表单提交
    ///<summary>///向指定的URL地址发起一个POST请求。///</summary>///<paramname="url">要请求的URL地址</param>///<paramname="keyvalues">要上传的数据项</param>///<retur......