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

SAM详解2.1(好题1)

SAM

  • SAM
      • 题目
    • 一个性质
    • 求解 k 小串

SAM

你可能需要先看一看前面两篇文章。

SAM详解1

SAM详解2(初级应用)

题目

题目链接

题意:给你一个字符串 s s s,求它的字典序第 k k k 小子串。注意需要分别处理两种情况,一种相同的字串只算一次,一种算多次。

数据范围: 1 ≤ ∣ s ∣ ≤ 5 × 1 0 5 , 1 ≤ k ≤ 1 0 9 1\le |s| \le 5\times 10^5,1\le k\le10^9 1s5×105,1k109

一个性质

周所周知,SAM 是一个 DAG。

而且有一个显然的性质:SAM 中任意两个节点的表示集合没有交。

所以,从某个节点(不一定要求是源点)出发的路径组成的串,都是互不相同的,如果相同的话,就违背了上述性质。

于是我们可以在这个 DAG 上统计路径条数,也就是子串的数量。

f [ u ] f[u] f[u] 表示从 u u u 出发的路径数。则显然有 DP 式子: f [ u ] = ∑ f [ s o n [ u ] ] f[u]=\sum f[son[u]] f[u]=f[son[u]]

对于本质不同子串,我们可以把所有 f [ u ] f[u] f[u] 设置为

http://www.xdnf.cn/news/345979.html

相关文章:

  • Azure Databricks:数据创新与智能决策的云端利器
  • 生成数论:三生原理与中国数学的多点突破态势?
  • 基础 Python 编程的部分公式和概念总结
  • sherpa:介绍
  • LeetCode:翻转二叉树
  • DLMS协议 —— System title 详解(作用及结构一览)
  • C——操作符详解
  • 广州AI数字人:从“虚拟”走向“现实”的变革力量
  • HOW - 在 Mac 上的 Chrome 浏览器中调试 Windows 场景下的前端页面
  • 《React Native热更新实战:用Pushy打造无缝升级体验》
  • systemd vs crontab:Linux 自动化运行系统的全面对比
  • 深入理解栈数据结构(Java实现):从原理到实战应用
  • LeetCode[226] 翻转二叉树
  • 基于Qt开发的http/https客户端
  • 电子电气架构 --- 如何有助于提安全性并减少事故
  • FEKO许可限制
  • OpenCV 中用于背景分割的一个类cv::bgsegm::BackgroundSubtractorLSBP
  • 芯片笔记 - 手册参数注释
  • Spring Security(笔记)
  • 第37次CCF--机器人饲养
  • C语言自定义类型:联合与枚举详解
  • QT中的网络请求
  • Pycharm安装后打开提示:此应用无法在你的电脑上运行,若要找到合适于你的电脑的版本,请咨询发布者
  • 如何选择自己喜欢的cms
  • 【Unity中的数学】—— 四元数
  • 实时操作系统:航空电子系统的安全基石还是创新枷锁?
  • std::iota(C++)
  • 年龄估计数据集
  • 【工具推荐】Code2Prompt
  • 【HarmonyOS 5】鸿蒙页面和组件生命周期函数