当前位置: 首页 > news >正文

上海市住房和城乡建设管理局网站wordpress发表图片

上海市住房和城乡建设管理局网站,wordpress发表图片,wordpress引用js插件,网站建设考试知识点知识概览(哈希表) 哈希表可以将一些值域较大的数映射到较小的空间内,通常用x mod 质数的方式进行映射。为什么用质数呢?这样的质数还要离2的整数幂尽量远。这可以从数学上证明,这样冲突最小。取余还是会出现冲突情况。…

知识概览(哈希表)

  • 哈希表可以将一些值域较大的数映射到较小的空间内,通常用x mod 质数的方式进行映射。为什么用质数呢?这样的质数还要离2的整数幂尽量远。这可以从数学上证明,这样冲突最小。
  • 取余还是会出现冲突情况。怎么解决冲突呢,有两种方式:开放寻址法和拉链法。
  • 算法题中哈希表的题目可能会有添加、查找操作,删除操作较少,删除用逻辑删除,即用一个bool数组来标识出哪些数已经被删除了。

例题展示

题目链接

https://www.acwing.com/problem/content/842/

代码(拉链法)

#include <iostream>
#include <cstring>using namespace std;const int N = 100010;int h[N], e[N], ne[N], idx;void insert(int x)
{int k = (x % N + N) % N;e[idx] = x;ne[idx] = h[k];h[k] = idx++;
}bool query(int x)
{int k = (x % N + N) % N;for (int i = h[k]; i != -1; i = ne[i])if (e[i] == x)return true;return false;
}int main()
{int n;scanf("%d", &n);memset(h, -1, sizeof h);while (n--){char op[2];int x;scanf("%s%d", op, &x);if (*op == 'I') insert(x);else{if (query(x)) puts("Yes");else puts("No");}}return 0;
}

代码(开放寻址法)

#include <iostream>
#include <cstring>using namespace std;const int N = 200003, null = 0x3f3f3f3f;  // 数组长度设置为题目数据范围的2~3倍且是质数int h[N];int find(int x)
{int k = (x % N + N) % N;while (h[k] != null && h[k] != x){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];int x;scanf("%s%d", op, &x);int k = find(x);if (*op == 'I') h[k] = x;else{if (h[k] != null) puts("Yes");else puts("No");}}return 0;
}

知识概览(字符串哈希)

  • 字符串哈希也称为字符串前缀哈希法,它先预处理出所有前缀的哈希值。
  • 主要思想是用一个P进制的角度把一个字符串看成一个数字。例如一个字符串"ABCD",假设A为1,B为2,C为3,D为4,则其哈希值为\left ( 1 \times P^3 + 2 \times P^2 + 3 \times P^1 + 4 \times P^0 \right )\mod Q,其中P可以取131或13331,Q可以取2^{64},这些是经验值,99.99%的情况下不会出现冲突,不解决冲突。
  • 字符串哈希用来快速判断两个字符串是不是相等。KMP算法可以求循环节,除此之外,KMP算法不如字符串哈希,字符串哈希确实简单直接。

例题展示

题目链接

https://www.acwing.com/problem/content/843/

题解

不用考虑取余,溢出相当于取余2^{64}

代码

#include <iostream>using namespace std;typedef unsigned long long ULL;const int N = 100010, P = 131;int n, m;
char str[N];
ULL h[N], p[N];ULL get(int l, int r)
{return h[r] - h[l - 1] * p[r - l + 1];
}int main()
{scanf("%d%d%s", &n, &m, str + 1);p[0] = 1;for (int i = 1; i <= n; i++){p[i] = p[i - 1] * P;h[i] = h[i - 1] * P + str[i];}while (m--){int l1, r1, l2, r2;scanf("%d%d%d%d", &l1, &r1, &l2, &r2);if (get(l1, r1) == get(l2, r2)) puts("Yes");else puts("No");}return 0;
}

参考资料

  1. AcWing算法基础课
http://www.yayakq.cn/news/210976/

相关文章:

  • 个人网站的内容南通外贸网站制作
  • 响应式网站建设定制建设网络平台费用
  • 深圳大浪有做网站的吗顺德手机网站设计信息
  • 网站建设费用模板体育网站建设的必要性
  • 网站建设亿码酷出名5手机微信怎么创建公众号
  • 网站禁止访问怎么解除电影采集网站怎么做
  • 网站建设维护协议吉林网站备案
  • 遵义网站制作报价seo快速优化文章排名
  • 上海网站注销php网站开发工程师任职要求
  • 自建网站管理网站建设 需要注意什么
  • 怀柔 做网站的东莞如何制作网页
  • 免费发布推广信息网站0元免费做代理
  • 站长基地gif网站素材网页设计基础教程第七章课后习题
  • 合肥市城乡城乡建设局网站静态网站跟动态的区别
  • 优秀品牌企业网站建设案例百汇游戏网站开发商
  • 企业网站模板购买网站如何报备
  • 服务器win7网站建设网页设计与制作html
  • 网站建设和维护方案郑州企业招聘
  • 东莞市建设工程质监督站网站外国可以做站外推广的网站
  • 广州哪里做网站站酷设计网站官网入口插画设计
  • 百度怎样建设网站京东导购网站开发
  • 潍坊网站建设如何自己做网站卖
  • 卡盟网站建设网站优化 价格
  • 大学招生网站建设网站接入百度地图
  • 浙江做铁塔的公司网站客户推广公司
  • 个人做当地旅游网站重庆哪里有做网络推广
  • 杭州python做网站个人网站模板的优缺点
  • 一个网站的建站流程百度的链接
  • 佛山网站建设哪个郑州网站关键词优化外包
  • 海南省住房和建设厅网站企业门户网站建设方案