非确定性有穷状态决策自动机练习题Vol.3 D. Dp搬运工3 题目描述 给定两个长度为 \(n\) 的排列,定义 \(magic(A,B)=∑_{i=1}^nmax(Ai,Bi)\) . 现在给定 \(n\),\(K\) 问有多少对 \((A,B)\) 满足 \(magic(A,B)≥K\). 分析 首先转化一下,我们固定排列 \(B\) 为 $1∼n $,最后答案乘个 \(n!\) 就好了 我们设 \(f[i][j][k]\) 为 考虑到第 \(i\) 个位置,\(i\) 之前有 \(j\)…
非确定性有穷状态决策自动机练习题Vol.1 A.扭动的回文串 题目描述 \(JYY\)有两个长度均为\(N\)的字符串\(A\)和\(B\). 一个"扭动字符串\(S(i,j,k)\)由\(A\)中的第\(i\)个字符到第\(j\)个字符组成的子串 与B中的第\(j\)个字符到第\(k\)个字符组成的子串拼接而成. 比如,若\(A\)='XYZ',\(B\)='UVW',则扭动字符串\(S(1,2,3)\)='XYVW'. \(JYY\)定义一个"扭动的回文串"为如下情况中的…
非确定性有穷状态决策自动机练习题Vol.2 C. 奇袭 题目描述 由于各种原因,桐人现在被困在\(Under World\)(以下简称\(UW\))中,而\(UW\)马上 要迎来最终的压力测试--魔界入侵. 唯一一个神一般存在的\(Administrator\)被消灭了,靠原本的整合骑士的力量 是远远不够的.所以爱丽丝动员了\(UW\)全体人民,与整合骑士一起抗击魔族. 在\(UW\)的驻地可以隐约看见魔族军队的大本营.整合骑士们打算在魔族入侵前 发动一次奇袭,袭击魔族大本营! 为了降低风险,爱…
前言: 这题感觉还是很有意思.离线思路很奇妙.可能和二次离线有那么一点点相似?当然我不会二次离线我就不云了. 解析: 题目十分清真. 求一段连续区间内的所有点和某个给出的点的Lca的深度和. 首先可以转化一步. 我们可以只考虑一个询问.那么当前询问的答案可以转化为:将区间[l,r]中的每一个点到根节点的路径上的点的点权都加一.然后统计给出点z到根节点的路径上的点权之和即可. 可以使用树剖线段树搞定. 这个转化正确性显然. 但是,当考虑到多次询问时,就有点不对劲.因为两个询问如果一起计算贡献,就会…
前言: 老火星人了 解析: 很妙的二分题.如果没想到二分答案.. 很容易想到尝试用双指针扫一下,看看能不能统计答案. 首先,tail指针右移时很好处理,因为tail指针右移对区间最大值的影响之可能作用在a[tail]上,因此只需要维护区间最大出现次数对应的值即可. 但是会发现,head指针右移时很难处理,因为如果原来区间最大值减小,使其不成为当前区间最大值时,这时无法快速找到新的区间最大值.(反正我不会,嘤) 这时应该怎么办呢? 考虑二分答案,可以很妙的消除掉这个影响. 我们考虑当前二分的答案是…
水题大战Vol.3 B. DP搬运工2 题目描述 给你\(n,K\),求有多少个\(1\)到\(n\) 的排列,恰好有\(K\)个数\(i\) 满足\(a_{i-1},a_{i+1}\) 都小于\(a_i\). 输入格式 一行两个整数\(n,K\). 输出格式 一行一个整数\(ans\)表示答案\(mod 998244353\). 样例 样例输入1 4 1 样例输出1 16 样例输入2 10 3 样例输出2 1841152 数据范围与提示 对于 \(25\%\) 的测试点,\(1 \leq n,…
package main import ( "fmt" "runtime" "sync" ) const N = 26 func main() { const GOMAXPROCS = 1 runtime.GOMAXPROCS(GOMAXPROCS) var wg sync.WaitGroup wg.Add(N) for i := 0; i < N; i++ { go func(i int) { defer wg.Done() fmt.Pr…
AC自动机板子,学习之前要是忘记了就看一下 1465: [AC自动机]地图匹配 poj1204 时间限制: 1 Sec  内存限制: 256 MB提交: 78  解决: 46[提交] [状态] [讨论版] [命题人:admin] 题目描述 [题意] 给出有一个L*C的字符地图,地图的行与列都从0开始编号然后给出一些字符串,求出这些字符串在字符地图上第一次出现的坐标输出字符串第一个字母的坐标和字符串的方向字符串的方向是指字符串的走向A表示正北,B表示东北,C表示正东,D表示东南,E表示正南,F表示…
  前言:网上大部分文章写的有点乱,很少有讲得易懂的文章. 所以,我写了篇在我能看得懂的基础上又照顾到大家的文章 =.= 作者:X1aoYE 备注:此文原创,转载请注明~  内容里的<br>请无视.. 关键字:Vue.非父子组件.兄弟组件.传值.共享状态 应用例子: 主题颜色更换 购物车传值 就像名字所说的兄弟组件传值,自己理解其他例子了哈~ 小型项目:    推荐使用 global event bus (事件总线)  ,不然小项目里用 Vuex 相对来说会挺繁琐   步骤:   1. 新建一…
这是之前我写的原始的 VB.NET 版本: http://www.cnblogs.com/RChen/archive/2010/05/17/1737587.html 转化为 C# 版本后,还进行了一些重构.包括修改成了强类型,以及使用了 Parallel.ForEach,但是发现没有收到预期的效果.性能提升比较少. 研究后发现,其实问题的关键在于要通过某种方式对遍历的可能性进行剪枝,这样才能减少遍历次数,从而提升性能.而且,由于结果是通过 yield return 和 IEnumerable 实…
前端小白的算法之路   时隔多日终于解决了埋在心头的一道难题,霎时云开雾散,今天把一路而来碰到的疑惑和心得都记录下来,也算是开启了自己探索算法的大门. 问题背景 曾经有一个年少轻狂的职场小白,在前端圈子里摸爬滚打将近两年,本计划在js的道路上越走越远,以至于每天沉浸在js红皮书里不能自拔,突然有一天脑抽想找leader比划两下,于是出现了下面的对话,小白:leader,您最近在干嘛?手里有需要亟待解决的难题吗?leader:咦,确实有哎,咱的项目随着业务的不断发展,日均PV也越来越多,公司的两台…
题目 输入格式 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库 的行数 接下来M行的01串,表示标准作文库 接下来N行的01串,表示N篇作文 输出格式 N行,每行一个整数,表示这篇作文的Lo 值. 输入样例 1 2 10110 000001110 1011001100 输出样例 4 提示 输入文件不超过1100000字节 注意:题目有改动,可识别的长度不小于90%即可,而不是大于90% 题解 想来练练SAM,却跪在了单调队列DP上...QAQ 根据后缀数组进行多串匹配时,用一个未出…
POJ3279http://poj.org/problem?id=3279 题意:黑白的板,每次选择一个十字形翻转(十字板内黑白互换,若是边界则不管),求最小将原图变为全白的策略. 这是一道对于每个格子的选择会对相邻格子造成影响的问题,回顾一下,这个问题和状压dp解决的问题的条件基本一致,而状压dp是求总方案数,这个是求最佳方案 操作上:状压dp,通过对第一行的状态进行枚举,然后对后面的每一行进行相应枚举,记录方案数,类似的,这道题,通过对第一行的状态进行枚举,然后对后面的每一行进行的操作是--…
HDU2825 Wireless Password Problem Description Liyuan lives in a old apartment. One day, he suddenly found that there was a wireless network in the building. Liyuan did not know the password of the network, but he got some important information from h…
给你m个01串,问你有多少个长度为2L的01串,满足前半段倒置取反后等于后半段,并且包含所有的m个01串. 考虑单词完全在中线前面或者后面的情况,直接将单词及其倒置取反插入AC自动机,AC自动机每个结点用个tag压位记录单词集合. 对于跨越中线的情况,比如说110010是一个单词,枚举一个中线, 11 | 0010 在前面添加上10,变成10 11 | 0010, 那么其前半部分1011也是一个合法的单词,只不过这种类型的单词只有在dp到长度恰好为L时才能用. 于是AC自动机上每个结点记录两种t…
f(i,j,S)表示当前字符串总长度为i,dp到AC自动机第j个结点,单词集合为S时的方案数. 要注意有点卡常数,注意代码里的注释. #include<cstdio> #include<cstring> #include<queue> using namespace std; queue<int>q; #define MOD 20090717; int child[111][26],fail[111],size,f[30][111][1100],tag[11…
诶这题洛谷居然没有??? 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1444 题解: 我见到主要有三种做法. 一是矩阵乘法.设\(dp[t][i]\)表示时间\(t\)之后在AC自动机\(i\)节点的概率,那么转移是一个矩阵乘法的形式,构造转移矩阵\(f\), 如果\(u\)是某个串的结尾点,则\(f[u][u]=1,f[u][v]=0 (v\ne u)\), 否则直接按概率搞. 然后这个矩阵的\(t\)次幂就可以得到\(t\)…
Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Others) Total Submission(s): 2302    Accepted Submission(s): 724 Problem Description Great! Your new software is almost finished! The only thing left to do is archiving a…
题目传送门 题意:训练指南P217 分析:没有模板串也就是在自动机上走L步,不走到val[u] == v的节点的概率 PS:边读边insert WA了,有毒啊! #include <bits/stdc++.h> using namespace std; const int K = 20 + 5; const int L = 100 + 5; const int NODE = K * K; const int SIZE = 66; int idx[256], n; struct AC { int…
[BZOJ2806][Ctsc2012]Cheat Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数接下来M行的01串,表示标准作文库接下来N行的01串,表示N篇作文 Output N行,每行一个整数,表示这篇作文的Lo 值. Sample Input 1 2 10110 000001110 1011001100 Sample Output 4 HINT 输入文件不超过1100000字节 注意:题目有改动,可识别的长度不小于90%即可,而不是…
题目描述(转自百度文库) 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加. 在大会的晚餐上,调酒师Rainbow调制了 …
Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数接下来M行的01串,表示标准作文库接下来N行的01串,表示N篇作文 Output N行,每行一个整数,表示这篇作文的Lo 值. Sample Input 1 2 10110 000001110 1011001100 Sample Output 4 解题思路: L0值具有单调性. L0值为0时,一定有匹配,为1时只需要考虑字符集,为2时要考虑前后顺序,所以具有单调性,L0越小匹配长度越大,那么可以…
学习博客:戳这里 附本人代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 1e5 + 10; 5 const ll mod = 998244353; 6 set<int>nu[maxn], rol[2]; 7 int a[maxn]; 8 ll dp[maxn][222][3]; 9 int main() { 10 int n; 11 sc…
状态机理论最初的发展在数字电路设计领域.而在软件设计领域,状态机设计的理论俨然已经自成一体. 状态机是软件编程中的一个重要概念,比这个概念更重要的是对它的灵活应用.在一个思路清晰而且高效的程序中,必然有状态机的身影浮现.比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键后切换到了B状态,再触发另一个键后切换到C状态,或者返回到A状态.这就是最简单的按键状态机例子.实际的按键解析程序会比这更复杂些,但这不影响我们对状态机的认识.进一步看,击键动作本身也可以看做一个状态机.…
貌似刚开学的时候装了个逼,和老师立了个flag说我要写个正则表达式引擎,然后学期末估计老师早就忘了这茬了,在历时3个月的懒癌发作下,终于在这学期末deadline的时候花了一个下午加晚上在没有网的房间写完了它,于是便有了这篇blog,本来想正儿八紧写篇论文,说不定毕业设计可以直接丢一篇这个走人,但第一觉得一个晚上写好的东西太low了,第二自己实在不适合写那种正经的论文,于是还是写从高中开始的一贯的乱七八糟体好了. 主要写自己写的时候遇到的一些瓶颈,例如茹何储存一个图,茹何遍历一个图,茹何表示一个…
这篇主要是基于<精通正则表达式>的一篇读书笔记,因为书还没看完,可能以后还会有相关的笔记.(工作以后看书的效率真的很低啊……) 正则引擎主要可以分为基本不同的两大类:一种是DFA(确定性有穷自动机,学过计算理论的应该都知道),另一种是NFA(非确定性有穷自动 机),DFA和NFA都有很长的历史,NFA的历史更长一些,两者在二十多年的发展中产生了许多不必要的变体.而POSIX标准的出台是为了规范这种现 象.POSIX标准不但清楚地规定了引擎应该支持的元字符和特性,还明确规定了使用者期望由表达式获…
题目链接 题意 给定\(m\)个字符串,问长度为\(n\)的字符串中有多少个不包含那\(m\)个字符串. (字符集为\(A,T,C,G\),\(m\leq 10\),长度\(\leq 10\),\(n\leq 2e9\)) 思路 状态转移--矩阵 构造一个矩阵\(m[\ ][\ ]\),\(m[i][j]\)代表有多少种方式可以走一步从第\(i\)个节点到第\(j\)个节点, 则\(m^n[i][j]\)即代表有多少种方式可以走\(n\)步从第\(i\)个节点到第\(j\)个节点, 于是答案呼之…
以前只有代码,最近简单写了一点文档: google code 上的链接(总是最新) 自动机是什么 DFA 的最小化 将 DFA 用做字典 无环DFA (ADFA, Acyclic DFA) 编译 内存用量/查询性能 map 与 set 自动机实用程序 自动机的 C++接口 DFA_Interface DAWG_Interface 超级功能 以拼音输入法为例 自动机是什么 这里只讲有穷自动机,自动机的形式化定义,可以参考 wikipedia: 自动机 有穷状态自动机 (FSA) 确定性的有穷自动机…
本文转自豆瓣_燃烧的影子 图灵机与可计算性 图灵(1912~1954)出生于英国伦敦,19岁进入剑桥皇家学院研究量子力学和数理逻辑.1935年,图灵写出了"论高斯误差函数"的论文,因此他从一名学生直接成为学院的研究员,并开始了"可计算性"研究.1936年4月,图灵发表了"可计算数及其在判定问题上的一个应用"的论文,形成了"图灵机"的重要思想.用反证法证明,任何可计算其值的函数都存在相应的图灵机:反之,不存在相应图灵机的函数就是…