随笔分类 -  模板

摘要:题目大意: 给出多个模式串和一个主串,求多少个模式串在主串中出现过。 传送门 这是一道AC自动机的模板题。 在学习AC自动机之前,首先要学习WA自动机、TLE自动机和MLE自动机(雾 AC自动机是一种多模式串匹配算法。 AC自动机概述: *fail指针:指向失配时的匹配节点; 1)构建字典树 2)初 阅读全文
posted @ 2017-09-06 13:24 羊毛羊 阅读(448) 评论(0) 推荐(0)
摘要:打算学AC自动机,才发现博客里没有写KMP的板子,补一发。 阅读全文
posted @ 2017-07-28 23:25 羊毛羊 阅读(219) 评论(0) 推荐(0)
摘要:1013 [JSOI2008]球形空间产生器sphere Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体。现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器。 有一个球形空间产生器 阅读全文
posted @ 2017-06-13 13:32 羊毛羊 阅读(264) 评论(0) 推荐(0)
摘要:有这么一类问题,要求统计一棵树上与子树相关的某些信息,比如:在一棵所有节点被染色的树上,统计每棵子树上出现次数最多的颜色编号之和。 很自然的可以想到用DFS序+主席树去求解,但是编码复杂度很高; 然后我们可以想到DFS序+莫队解决,然而$O(n\sqrt{n})$的时间复杂度在数据较大的时候容易TL 阅读全文
posted @ 2017-04-24 13:48 羊毛羊 阅读(509) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 #include 5 #define foru(i,x,y) for(int i=x;isiz[son[k]])son[k]=v; 32 } 33 } 34 35 void build(int k,int tp){ 36 id[k]=++cnt; top[k]=tp;//按序将边... 阅读全文
posted @ 2017-04-07 23:27 羊毛羊 阅读(464) 评论(0) 推荐(0)
摘要:1026: [SCOI2009]windy数 Description windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数? windy定义了一种windy数。不含前导零且相邻两个数字 阅读全文
posted @ 2017-04-03 21:30 羊毛羊 阅读(247) 评论(0) 推荐(0)
摘要:数位dp:一类统计区间[L,R]内某种符合规定的数字个数的题目。特征是R的范围会很大,O(N)范围内无法完成。 一般而言,解决这类题目有两种方式,一种是递推,另一种是记忆化搜索。 递推: 1)利用dp求出数组f[i][j](表示有i位,最高位为j的数字中符合要求的数字的个数) 2)根据给出的[L,R 阅读全文
posted @ 2017-04-03 21:26 羊毛羊 阅读(408) 评论(0) 推荐(0)
摘要:QTREE - Query on a tree You are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, 3...N-1. We will ask you t 阅读全文
posted @ 2017-03-21 13:40 羊毛羊 阅读(292) 评论(0) 推荐(0)
摘要:tarjan求桥,算法流程详见核心代码: 模板题:zoj2588 题目大意:给出一个无向图,按顺序输出割边序号。 好久没用zoj,PE几次,若无割边要加个判断,以免多输出个0 阅读全文
posted @ 2017-03-10 13:26 羊毛羊 阅读(234) 评论(0) 推荐(0)
摘要:isap模板核心代码: 一道水题:poj1273 题意:现在有m个池塘(从1到m开始编号,1为源点,m为汇点),及n条水渠,给出这n条水渠所连接的点和所能流过的最大流量,求从源点到汇点能流过的最大流量。 有多组数据!网上查的中文题意没说,样例只给了一组,WA。 阅读全文
posted @ 2017-02-07 13:35 羊毛羊 阅读(369) 评论(0) 推荐(0)
摘要:先码住: 板子:http://www.cnblogs.com/luckycode/p/5255656.html 求割点/割边:http://www.cnblogs.com/c1299401227/p/5402747.html 阅读全文
posted @ 2016-11-18 13:24 羊毛羊 阅读(154) 评论(0) 推荐(0)
摘要:做的第二道点分治的题目,比较裸,算是模板题吧(感觉比之前那题还简单点。 题目:BZOJ 2152 聪聪可可 题目大意:给出一棵树,求树上两点间长度为3的倍数(0也算)的路径数。 解题思路: 基本和POJ1741一样 2.不过重心,在重心的子树中 情况二可通过分治转化为情况1。 通过dfs求出每个点到 阅读全文
posted @ 2016-08-17 14:17 羊毛羊 阅读(265) 评论(0) 推荐(0)
摘要:写的第一道点分治的题目,权当认识点分治了。 点分治,就是对每条过某个点的路径进行考虑,若路径不经过此点,则可以对其子树进行考虑。 具体可以看menci的blog:点分治 来看一道例题:POJ 1741 Tree 题目大意:扔给你一颗有权无根树,求有多少条路径的长度小于k; 解题思路:先找出重心,用一 阅读全文
posted @ 2016-08-17 13:11 羊毛羊 阅读(336) 评论(0) 推荐(0)
摘要:Tarjan求强连通分量的流程在这个博客讲的很清楚,再加上我也没理解透,这里就不写了。 缩点:将同一个连通块内的点视为同一个点。 扔一道模板题:codeVS2822爱在心中 第一问很显然就是求点数大于一的连通块的个数,跑一次tarjan; 第二问脑补一下发现,缩点后,若图中有且仅有一个点出度为0且为 阅读全文
posted @ 2016-08-11 21:12 羊毛羊 阅读(696) 评论(0) 推荐(0)
摘要:Dij:贪心思想的单源最短路,时间复杂度O(n^2)。 Dij算法流程: 堆优Dij:即用堆优化的dij算法,时间复杂度O(nlogn);(但是据说跑起来比spfa快?求神犇解释) 堆优Dij算法流程: q为priority_queue,优先队列记录一个二元组,分别为索引位置和数值; d数组记录源点 阅读全文
posted @ 2016-08-02 21:26 羊毛羊 阅读(695) 评论(0) 推荐(0)
摘要:Spfa是一种求单源最短路径的算法,时间复杂度为O(每个节点进队次数*边数);(然而对这个复杂度并不是很有概念,比堆优dij是快还是慢啊。。。) 算法流程: 例题: Codevs2038香甜的黄油 对于每个点求一次spfa单元最短路,保留最小值作为答案。 阅读全文
posted @ 2016-07-29 23:02 羊毛羊 阅读(344) 评论(0) 推荐(0)
摘要:算法实现: 初始化:用dp实现初始化。a[]为原始数据数组f,[i][j]表示从i向后的2j个数字中的最值。显然f[i][0]=a[i]; 我们将f[i][j]分为两段,一段为a[i]~a[2j-1]的最值即f[i][j-1],一段为a[i+2j-1]~a[i+2j]即f[i+1<<(j-1)][j 阅读全文
posted @ 2016-07-29 22:16 羊毛羊 阅读(354) 评论(0) 推荐(0)
摘要:树状数组是一种可以在O(log n)内区间求和或单点修改的数据结构,因其代码简单且不需递归,效率较线段树高。 树状数组的实现: Lowbit:lowbit(k)是指整数k的二进制的右数第一个1以右的部分的大小,如(6)10=(110)2则lowbit(6)=(10)2=(2)10。 lowbit的简 阅读全文
posted @ 2016-07-28 22:22 羊毛羊 阅读(453) 评论(0) 推荐(0)
摘要:最近公共祖先: 两个节点的第一个公共父节点; 求最近公共祖先: 倍增法求最近公共祖先: 例题: hdoj 2586 How Far Away题目大意:一个村子里有n个房子,这n个房子用n-1条路连接起来,接下了有m次询问,每次询问两个房子a,b之间的距离是多少。 阅读全文
posted @ 2016-07-26 18:12 羊毛羊 阅读(342) 评论(0) 推荐(0)