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

如何搭建一个简单的网站软件开发培训学校

如何搭建一个简单的网站,软件开发培训学校,微信服务商平台官网,做代购可以在哪些网站上知识概览(哈希表) 哈希表可以将一些值域较大的数映射到较小的空间内,通常用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.dinnco.com/news/33437.html

相关文章:

  • 河北邢台宁晋县疫情最新情况seo外包一共多少钱
  • 哪几个网站做acm题目比较好山东做网站公司
  • 阿里妈妈推广代码如何加到wordpress网站里面网络广告人社区
  • 网络有限公司经营范围有哪些电商沙盘seo裤子关键词
  • 南宁网站seo外包情感营销经典案例
  • 重庆专业微信网站制作谷歌浏览器下载手机版安卓
  • 阿里云智能建站石家庄关键词快速排名
  • 企业网站服务器选择宁波seo排名外包
  • 许昌专业做企业网站的南昌seo优化公司
  • 广东省建设工程执业资格注册中心网站优秀营销软文范例500字
  • 最靠谱的网站建设公司seo营销外包
  • 网站建设公司应该怎么做推广sem优化软件选哪家
  • ip138域名网址查询成都seo顾问
  • 创网易邮箱账号商丘网站优化公司
  • 公司网站建设30元站长工具seo词语排名
  • 做网站教程下载站长工具友链查询
  • 宿迁专业网站三合一建设长沙sem培训
  • 中国建筑师室内设计网徐州seo排名公司
  • 网站开发外文翻译西安百度竞价托管代运营
  • wordpress 二级域名设置廊坊百度seo公司
  • 专业做网站的优化设计六年级上册数学答案
  • Wordpress 图片 不显示软件网站关键词优化
  • 网站网络广告推广北京优化互联网公司
  • 网站界面结构惠州seo报价
  • 在凡科建设网站的流程网上卖产品怎么推广
  • 昆山建筑行业网站百度指数分析案例
  • 做网站的害处百度快速排名软件
  • 沈阳的网站制作公司平台开发
  • 上海做网站优化价格查询网址域名
  • 网站仿站大多少钱seo免费课程视频