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

室内设计风格seo培训赚钱

室内设计风格,seo培训赚钱,wordpress播客主题,女女做那个动漫视频网站后缀数组感觉有点不好解释,简单记录一下板子。 后缀数组性质 lcp(i, j):指的是第i个后缀以及第j个后缀的最大公共前缀的长度 lcp(i, j) lcp(j, i) lcp(i, i) len(i) lcp(i, j) min(lcp(i, k), lcp(k, j)) 在o(nlogn)的时间复杂度内处理一个字符串&#xff…

后缀数组感觉有点不好解释,简单记录一下板子。

后缀数组性质

lcp(i, j):指的是第i个后缀以及第j个后缀的最大公共前缀的长度

  • lcp(i, j) = lcp(j, i)

  • lcp(i, i) = len(i)

  • lcp(i, j) = min(lcp(i, k), lcp(k, j))

在o(nlogn)的时间复杂度内处理一个字符串,得到三个数组。

sa[i]:表示排名为i的后缀是字符串中第几个后缀。

rk[i]:表示字符串中第几个后缀的排名。

height[i]:sa[i] 与 sa[i - 1] 的后缀的最长公共前缀的长度。

int n, m;
int o[N];
int c[N], x[N], y[N], sa[N], rk[N], height[N];
char s[N];
// x:最开始表示每个字符离散化后的值,也就是Ascll码,第一关键值
void get_sa() {for(int i = 1; i <= n; i ++) c[x[i] = s[i]] ++; for(int i = 2; i <= m; i ++) c[i] += c[i - 1];for(int i = n; i; i --) sa[c[x[i]] --] = i; // 以上是得到按照第一个字符进行排序后的后缀顺序sa,以及x数组,也就是每个后缀的第一关键字 for(int k = 1; k <= n; k <<= 1) { int num = 0;for(int i = n - k + 1; i <= n; i ++) y[++ num] = i; // 没有第二关键字就是最小的直接排序就行 for(int i = 1; i <= n; i ++) if(sa[i] > k) // 当前大小排名为i的后缀存在第二关键字  y[++ num] = sa[i] - k; // 减k之后才是以当前为第二关键字的后缀// 以上是按照第二关键字进行排序得到排序后的后缀顺序y  for(int i = 1; i <= m; i ++) c[i] = 0;for(int i = 1; i <= n; i ++) c[x[i]] ++; for(int i = 2; i <= m; i ++) c[i] += c[i - 1];for(int i = n; i; i --) sa[c[x[y[i]]] -- ] = y[i], y[i] = 0; // 以上是按照第一关键字进行排序之后的后缀顺序sa// 当前的操作已经完成,需要更新一下第一关键字,因为对于下一次循环的排序来说,第一关键字是当前的第一关键字和第二关键字的整体,所以需要对这个整体进行离散得到新的x数组第一关键字 swap(x, y); // y已经没用了,直接用来存储之前的第一关键字进行使用x[sa[1]] = 1, num = 1; // 第一个位置for(int i = 2; i <= n; i ++)  x[sa[i]] = (y[sa[i]] == y[sa[i - 1]] && y[sa[i] + k] == y[sa[i - 1] + k]) ? num : ++ num; // 如果第一关键字和第二关键字都相同则num值等于上一个位置,否则加一,因为当前的sa顺序已经是排序之后的,只需要考虑相等值得离散值相同即可。if(num == n) break; // 排序完成m = num;// 更新一下值域范围,一个小的时间优化}
} void get_height() {for(int i = 1; i <= n; i ++) rk[sa[i]] = i;for(int i = 1, k = 0; i <= n; i ++) {if(rk[i] == 1) continue;if(k) k --; int j = sa[rk[i] - 1];while(i + k <= n && j + k <= n && s[i + k] == s[j + k]) k ++;height[rk[i]] = k;} 
}inline void sovle() {cin >> s + 1;n = strlen(s + 1), m = 122;get_sa();get_height();for(int i = 1; i <= n; i ++) cout << sa[i] << " ";cout << endl;for(int i = 1; i <= n; i ++) cout << rk[i] << " ";cout << endl;for(int i = 1; i <= n; i ++) cout << height[i] << " ";cout << endl;
}

http://www.dt0577.cn/news/52300.html

相关文章:

  • html5简单政府网站模板竞价代运营
  • 微信微网站开发报价单企业seo职位
  • 开发平台英文廊坊seo快速排名
  • 郑州哪家公司做网站seo 的原理和作用
  • 长春专业做网站的公司排名百度贴吧网页入口
  • pos网站源码百度集团股份有限公司
  • 想在网站上放百度广告怎么做微信附近人推广引流
  • 做外贸自己做网站么百度站长平台提交网站
  • 客户网站开发全流程图91关键词排名
  • 流媒体 网站开发百家号优化
  • 转播新闻联播过程一套惠州百度关键词优化
  • 免费的图片做视频在线观看网站bing搜索引擎下载
  • 做地方网站要办什么证关键词文案生成器
  • 移动端网站建设 新闻动态网络营销推广价格
  • 四会城乡建设局网站爱客crm
  • 淄博网站制作制作广东最新消息
  • 网站后台重置密码怎么做百度网站检测
  • 武汉市建设委员会网站四川网络推广seo
  • 软件开发网站策划方案梅花seo 快速排名软件
  • 资阳网站推广北京优化网站公司
  • 郑州动力无限网站建设沧州seo公司
  • 上海电商网站建设阿里云搜索
  • 一个页面的网站百度投诉中心24人工
  • 自己做的网站怎么搜不到自助建站系统平台
  • 设计网站推荐室内百度服务中心官网
  • 北京不再公布各区疫情数据网站seo快速优化
  • wordpress设定主页seo基本概念
  • 我的个人网站怎么做市场调研的方法
  • 网页视频制作百度seo刷排名软件
  • html网页设计题库优化设计官网