首页 > 其他分享 >序列自动机

序列自动机

时间:2024-07-22 22:18:18浏览次数:14  
标签:pre nxt cur int pos tot 序列 自动机

序列自动机

判断字符串\(s\)是否存在序列\(t\)。只需要记录这个位置,后面每个字符出现的最早位置即可\(nxt\)。

  • 求子序列个数
    记忆化搜索\(f[x] = \underset {y \in x'son}{\sum} f[y] + 1\)
  • 求两串的公共子序列个数
    两个串的记忆化搜搜\(f[x][y]\)

例题:
luogu: P5826 【模板】子序列自动机

由于值域原因这题需要用主席树实现。

void insert(int l, int r, int pre, int& cur, const int& pos, const int& to) {
    nxt[++tot] = nxt[pre];
    L[tot] = L[pre];
    R[tot] = R[pre];
    cur = tot;
    if (l == r) { nxt[tot] = to; return; }
    int m = (l + r) >> 1;
    if (pos > m)insert(m + 1, r, R[pre], R[cur], pos, to);
    else insert(l, m, L[pre], L[cur], pos, to);
}
int query(int l, int r, int cur, const int& pos) {
    if (l == r)return nxt[cur];
    int m = (l + r) >> 1;
    if (m >= pos)return query(l, m, L[cur], pos);
    else return query(m + 1, r, R[cur], pos);
}

标签:pre,nxt,cur,int,pos,tot,序列,自动机
From: https://www.cnblogs.com/Qing17/p/18317102

相关文章

  • Gson的基本使用:解析Json格式数据 序列化与反序列化
    目录一,Gson和Json1,Gson2,Json3,Gson处理对象的几个重要点4,序列化和反序列化二,Gson的使用1,Gson的创建2,简单对象序列化3,对象序列化,格式化输出日期4,嵌套对象序列化5,对象数组序列化6,对象集合序列化一,Gson和Json1,Gson        Gson是Google发布的一个Java库,可......
  • AC自动机
    即在trie上kmp。AC自动机是一种多模式串匹配算法,用于在一个文本串中查找多个模式串。注意到,AC自动机的\(fail\)也构成了一个树形结构。我们只需要在操作完进行一个离线拓扑排序就不用每次匹配到一个点,暴力跑完所有fail确认是哪些模式串。structAC{vector<int>end[MAXN];......
  • 最长不降子序列 n log n 方案输出与 Dilworth 定理 - 动态规划模板
    朴素算法不必多说,\(O(n^2)\)的暴力dp转移。优化算法时间为\(O(n\logn)\),本质是贪心,不是dp。思路是维护一个单调栈(手写版),使这个栈单调不降。当该元素\(\ge\)栈顶元素时,把这个元素压入栈中。否则,在单调栈中找到第一个大于该元素的项,把这一项改为这个元素。(因为要......
  • 时间序列分析方法汇总对比及优缺点和适用情况(下)-- 11. 卡尔曼滤波 12. 广义自回归条件
    目录11.卡尔曼滤波(KalmanFilter)12.广义自回归条件异方差模型(GARCH)13.贝叶斯结构时间序列模型(BayesianStructuralTimeSeries,BSTS)14.动态因子模型(DynamicFactorModel,DFM)15.隐马尔科夫模型(HiddenMarkovModel,HMM)16.分段线性回归(PiecewiseLinearRegress......
  • P3041 [USACO12JAN] Video Game G 题解 AC自动机
    本题是一道AC自动机上的dp。首先不难想到状态定义f(i,j)表示仅考虑前i 个位置,第i 个字符是j 的分数,但无法转移,所以考虑将j这一维转化为表示AC自动机上的点。再定义val(i)表示以i 结尾的所有技能种数,则转移方程为f(i,j)=max(f(i,j),f(i-1,father(j)+val(j......
  • P1637 三元上升子序列
    链接https://www.luogu.com.cn/problem/P1637题目思路事实上和求逆序对的题目有点像,但是求的是同序对(?。先回顾下树状数组求逆序对的题目。https://www.cnblogs.com/zzzsacmblog/p/18314521这个总的思路其实就是前缀和,只不过拿树状数组优化了。先给每个节点对应的值对应树......
  • 如何修改 Jupyter Notebook 单元格左侧括号中的数字序列?
    Jupyter在每个单元格的左侧显示一个单元格编号:我想知道为什么JupyterNotebook单元格中的左括号数字序列仅显示奇数。当我更改文件时,它可能显示为偶数,那么如何将数字序列设置为其原始状态呢?JupyterNotebook中左侧括号中的数字序列表示单元格的执行顺序......
  • Chapter 11 Paython数据容器:序列
    欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!文章目录前言一、序列的定义二、序列的切片前言在Python中,数据容器是组织和管理数据的重要工具,序列作为其中一种基本的数据结构,具有独特的特性和广泛的应用。本章详细介绍了序列的定义及其切片......
  • DRF如何反序列化json?
    我使用React作为前端,django作为后端。我使用fetchAPI向服务器发送POST请求。数据通过JSON.stringify()传递。该请求将被Django中的视图拦截,数据可在视图函数的请求参数中获取。至少这是我所理解的。现在,当我访问request.body时,我惊讶地得到了一个字典。......
  • 动态规划2:计算最大连续子序列和
    importjava.util.HashMap;importjava.util.Map;publicclassDynamicProgramming2{publicstaticvoidmain(String[]args){int[]arr={3,-4,2,-1,2,6,-5,4};//暴力枚举法System.out.println(getMaxSumSubArr(arr));//加......