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

网站如何诊断进出石家庄最新通知

网站如何诊断,进出石家庄最新通知,dz论坛seo设置,kol营销[python刷题模板] 前缀函数/next数组/kmp算法 一、 算法数据结构1. 描述2. 复杂度分析3. 常见应用4. 常用优化二、 模板代码1. 裸前缀函数2. 树上kmp3. 裸kmp三、其他四、更多例题五、参考链接一、 算法数据结构 1. 描述 前缀函数和next数组基本上是一个东西#… [python刷题模板] 前缀函数/next数组/kmp算法 一、 算法数据结构1. 描述2. 复杂度分析3. 常见应用4. 常用优化二、 模板代码1. 裸前缀函数2. 树上kmp3. 裸kmp三、其他四、更多例题五、参考链接一、 算法数据结构 1. 描述 前缀函数和next数组基本上是一个东西但储存的内容不同。 他们是kmp算法的基础。但真的不太好理解以及不好写背不过。 前缀函数π(i)可以在O(n)的时间计算出来数组内每个前缀的前缀函数。参考 oiwiki前缀函数与 KMP 算法kmp还可以结合字典树搞ac自动机待施工。前缀函数π[i]代表的前缀s[:i1]和后缀s[-i:]相同的情况下是前缀长度。 简单来说 pi[i] 就是子串 s[0… i] 最长的相等的真前缀与真后缀的长度。 next数组是指模式串在i位置匹配失败后应该向前跳到哪个位置开始继续匹配。 2. 复杂度分析 预处理O(n)查询O(n) 3. 常见应用 字符串查询。 4. 常用优化 从意义上来说前缀函数值得是前后缀相同的长度next数组是匹配失败后模式串指针j要去的位置。 因此kmp搜索用next数组写法简单点(参考模板代码3)但找前后缀用前缀函数更直观模板代码1。 二、 模板代码 1. 裸前缀函数 例题: 4808. 构造字符串 这题暴力能过但还是前缀函数nb。 # Problem: 构造字符串 # Contest: AcWing # URL: https://www.acwing.com/problem/content/4811/ # Memory Limit: 256 MB # Time Limit: 1000 msimport sys import bisect import random import io, os from bisect import * from collections import * from contextlib import redirect_stdout from itertools import * from array import * from functools import lru_cache from types import GeneratorType from heapq import * from math import sqrt, gcd, infif sys.version 3.8: # ACW没有combfrom math import combRI lambda: map(int, sys.stdin.buffer.readline().split()) RS lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split()) RILST lambda: list(RI()) DEBUG lambda *x: sys.stderr.write(f{str(x)}\n)MOD 10 ** 9 7def prefix_function(s):计算s的前缀函数n len(s)pi [0] * nfor i in range(1, n):j pi[i - 1]while j 0 and s[i] ! s[j]:j pi[j - 1]if s[i] s[j]:j 1pi[i] jreturn pi # ms def solve():n, k RI()t, RS()mx prefix_function(t)[-1]if mx 0:return print(t * k)suf t[mx:]print(t suf * (k - 1))if __name__ __main__:solve()2. 树上kmp 链接: 1367. 二叉树中的链表 试了下树上kmp是负优化但可能是数据问题。 class Solution:def isSubPath(self, head: ListNode, root: TreeNode) - bool:path []while head:path.append(head.val)head head.nextn len(path)def get_next(p):n len(p)nxt [0]*nnxt[0] -1j,k0,-1while j n-1:if k -1 or p[j] p[k]:j1k1if p[j] p[k]:nxt[j] nxt[k]else:nxt[j] k else:k nxt[k]return nxtnxt get_next(path)# print(nxt)def dfs_kmp(tree, j):if j n:return Trueif not tree:return Falseif j -1 or tree.val path[j]:return dfs_kmp(tree.left,j1) or dfs_kmp(tree.right,j1)else:return dfs_kmp(tree,nxt[j]) 3. 裸kmp 链接: 28. 找出字符串中第一个匹配项的下标 class Solution:def strStr(self, haystack: str, needle: str) - int:m,n len(haystack),len(needle)# def get_next(p):# n len(p)# nxt [-1] * n# j, k 0, -1# while j n - 1:# if k -1 or p[j] p[k]:# j 1# k 1# if p[j] p[k]:# nxt[j] nxt[k]# else:# nxt[j] k# else:# k nxt[k]# return nxt# nxt get_next(needle)# print(nxt)# i j 0 # while i m and j n:# if j -1 or haystack[i] needle[j]:# i 1# j 1# else:# j nxt[j]# if j n:# return i - j # return -1def prefix_function(s):计算s的前缀函数n len(s)pi [0] * nfor i in range(1, n):j pi[i - 1]while j 0 and s[i] ! s[j]:j pi[j - 1]if s[i] s[j]:j 1pi[i] jreturn pipi prefix_function(needle)print(pi)i ,j 0,0 while i m and j n:while j 0 and haystack[i] ! needle[j]:j pi[j-1]if haystack[i] needle[j]: j 1if j n:return i - j 1i 1return -1三、其他 四、更多例题 五、参考链接
http://www.w-s-a.com/news/992933/

相关文章:

  • 网站建设电子商务课总结和体会关于做网站书籍
  • 仪征网站建设公司哪家好简单网页制作素材图片
  • 甘肃第九建设集团公司网站潍坊个人做网站
  • 如何做后台网站的教程网站建设 关于我们
  • 极速网站建设哪家好连云港百度推广网站建设
  • 医院网站建设的目标wordpress中英文网站模板
  • 门户型网站开发难度网站导航栏有哪些
  • 推荐做任务网站软件定制开发哪家好
  • 邯郸兄弟建站第三方仓储配送公司
  • 商丘家具网站建设wordpress 添加代码
  • 基础建设的网站有哪些内容成都科技网站建设咨询电话
  • 券多多是谁做的网站招聘网站开发模板
  • 网站主机一般选哪种的企业数字展厅
  • 网站建设该如何学衡水建设局网站首页
  • 高校网站建设工作总结番禺网站开发哪家好
  • 苏州 网站的公司wordpress主页代码
  • 怎么用html做图片展示网站外贸网站建设推广费用
  • 可以做本地生活服务的有哪些网站中油七建公司官网
  • 如何建设谷歌网站网站建设优点
  • 做网站的目标是什么产品宣传片制作公司
  • 柳州建设公司网站辽宁建设工程信息网评标专家入库
  • 合肥建设学校官方网站excel导入wordpress
  • 禹城网站设计做网站需要考虑哪些
  • 深圳做营销网站建设wordpress添加文章封面
  • 阿里云的网站建设方案织梦和wordpress哪个安全
  • 聊城网站建设公司电话wordpress怎么重新配置文件
  • 创业如何进行网站建设泰州公司注册
  • 免费网站建设培训学校手机百度高级搜索入口在哪里
  • 建站经验安徽六安发现一例新冠阳性检测者
  • 滨州内做网站系统的公司汕头网络营销公司