题目:http://codeforces.com/contest/1150/problem/D 老是想着枚举当前在给定字符串的哪个位置,以此来转移. 所以想对三个串分别建 trie 树,然后求出三个trie树上各选一个点的答案.那么从“在三个trie树的根,在给定字符串的0位置”开始扩展. 当然 TLE 了. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #…
也许更好的阅读体验 \(\mathcal{Description}\) 有一个长度为 \(n\)的自然数序列 \(a\),要求将这个序列分成至少 \(m\) 个连续子段 每个子段的价值为该子段的所有数的按位异或 要使所有子段的价值按位与的结果最大,输出这个最大值 \(T\)组询问 \(T\leq 10,n,m\leq 1000,a_i\leq 2^{30}\) \(\mathcal{Solution}\) 实际上数据范围可开大很多 我们贪心的一位一位的确定最终答案,即看当前考虑的位能否为\(1\…
好像序列自动机还没有写过- 串长为n的串共有n+1个节点,除了串中的n个节点,还有一个空的根节点放在串首.每个节点至多有26条出边,每条边连向它之后的第一个字符. 串中的任意一个子序列对应了一条根到某个节点的路径.且每条路径对应一个不同的子序列. 每个节点的parent是这个字母上一次出现的位置.更新只要沿parent指针扫描即可. FJOI2016 所有公共子序列问题 这题暴力建trie能过80真是悲伤(因为按FJOI命题风格这题没有写数据范围 建完序列自动机暴力DP即可 #include <…
题意: 给一个1e5的串str,然后有三个起始空串,不超过1000次操作,对三个字符串的一个尾部加一个字符或者减一个字符,保证每个字符不会超过250 每次操作之后询问你这三个串是不是可以组成str的子序列, 比如ab,cd,ef可以组成acgbdef的子序列 思路: dp[i][j][k]为三个串分别匹配到i,j,k的时候组成的子序列的最后一个字符在str中的位置,如果dp[strlen(str1)][strlen(str2)][strlen(str3)]>n则输出no 对每一次询问我们可以处理…
题目1 BZOJ 3676 APIO2014 回文串 算法讨论: cnt表示回文自动机上每个结点回文串出现的次数.这是回文自动机的定义考查题. #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; ; + ; typedef long long ll; char st…
[BZOJ4032][HEOI2015]最短不公共子串(后缀自动机,序列自动机) 题面 BZOJ 洛谷 题解 数据范围很小,直接暴力构建后缀自动机和序列自动机,然后直接在两个自动机上进行\(bfs\),找到的第一个不同时存在的节点就直接输出就好了. #include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; #define MAX 404…
题目链接:https://nanti.jisuanke.com/t/38232 题目大意:给你一个字符串,然后再给你m个字符串,然后问你在第一个字符串中不连续的子串能不能构成输入的子串. 具体思路:构建一个序列自动机就可以了.刚接触,记录下 AC代码: #include<bits/stdc++.h> using namespace std; # define ll long long # define inf 0x3f3f3f3f ; ; char str[maxn]; ]; ]; void…
SMO算法是一一种启发式算法,它的基本思路是如果所有变量的解的条件都满足最优化问题的KKT条件,那么这个最优化问题的解就得到了.因为KKT条件是该优化问题的充分必要条件. 整个SMO算法包括两个部分: 1)求解两个便令的二次归化的解析方法 2)选择变量的启发式方法. SMO算法的特点是不断地讲原二次规划问题分解为只有两个变量的二次规划子问题.并对子问题进行解析求解,直到所有变量满足KKT条件为止.这样通过启发式的方法得到原二次规划问题的最优解.因为子问题有解析解,所以每次求解子问题的解的速度都很…
题目描述 在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之. 一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是. 一个串的“子序列”指的是它的可以不连续的一段,例如bde是abcdef的子串,但bdd不是. 下面,给两个小写字母串A,B,请你计算: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (3) A的一个最短的子序列,它不是B的子串 (4) A的一个最短的子序列,它不是B的子序列 输入 有两行…
题目链接:https://ac.nowcoder.com/acm/contest/392/J 题目大意:给一个字符串s,然后在给出n个其他的字符串,判断每个字符串是否为s的子序列. 例: 输入: noiauwfaurainairtqltqlmomomo8rainairtqlnttxiaobaioiiioooorzcnzcnznbooooo 输出: YesYesYesYesNoYesNoNo 解题思路:序列自动机,对字符串s预处理出在每个位置,下一个字符出现的位置,匹配的时候就从前往后匹配,看是否…