xyf的板子
文章平均质量分 64
MyZhY
For You To Your For
展开
-
模板 AC自动机
板子题目:n个串以及1个总串,求出n个串内在这个总串内(整串)出现的个数。AC自动机的模板题目。AC自动机今天才知道又叫trie图……其实就是fail指针的巧妙性而已。什么是AC自动机我就不说了,网上资料也是很多的……在这里就给出我一直在用的代码吧。首先当然是把那n个串放入trie树了……然后匹配。。感觉这份代码还是挺好的。#includeus原创 2017-07-20 21:31:50 · 361 阅读 · 0 评论 -
模板整理: 部分数据结构
最重要的内容之一= = 主要整一下线段树,树状数组,st表,平衡树。 主要前3个,第4个是用来乱搞的= =会用set的应该也口译。。。 1.线段树 主要思想是把一个线段从中间分开,分别处理, 然后合并两个区间。 有区间合并性的信息都可以用线段树来维护。 常数偏大,注意数组开4倍防止越界。 还有懒惰标记,处理区间更新的情况。有时候下传标记顺序很重要。 单点修改直接log(n)修改原创 2017-11-10 09:42:28 · 548 阅读 · 0 评论 -
模板整理: 图论---二分图匹配
二分图要记住的性质:(n为点数) 二分图最大匹配=二分图最小点覆盖 =n-二分图最大点独立集 =n-二分图最小边覆盖 求二分图最大匹配的方法:匈牙利算法。 思路:找路增广……(网络流= =) 时间复杂度O(α∗n2\alpha*n^2),α\alpha为一个比较小的常数。 实际题目里有些题n=4W也能跑过,所以稍微放点心。 模板:luogu3386 给出两个点集间的连边,求二分原创 2017-11-10 07:46:55 · 428 阅读 · 0 评论 -
模板整理: 图论---最短路
最短路……基础但重要…… 主要有floyd,dijkstra,SPFA这种, 看数据范围的。 floyd还可以用来求传递闭包,也就是连通性的问题。 最短路问题:给出一张图,求s~t的最短路。 1.floyd算法。 使用它的时候一般都是用邻接矩阵计算了……//dis[i][j]一开始的初值://若输入的边里有(i,j),则dis[i][j]为其权值//不然dis[i][j]=INF原创 2017-11-09 09:42:45 · 547 阅读 · 0 评论 -
模板整理: 图论---最小生成树
最小/大生成树是个非常厉害的知识点, 题目可以出得很巧, 记住它的最优子结构性质,并且很多时候性质有大用(例如货车运输) 稀疏图Kruskal,稠密图(有时候)Prim. 求最小生成树一般都是2种: 1.prim O(N2N^2),可以用堆优化到O(N∗log(N)N*log(N)), 不是很常用,不过其实也很好写。 好吧也不能说不常用,我是指我用得比较少= = 毕竟C++一个so原创 2017-11-09 16:40:11 · 559 阅读 · 0 评论 -
整理: 动态规划---相关优化
注意以下内容都是在我的认知范围内,有错误在所难免…… 1.矩阵乘法优化, 具体一点地,比如当前dp状态是多维, 那么把后面几维装压变成一维, 比如f[i][j],而i=1~n,j=1~m, 把它写成f[i],i=1~n*m,对应转移。 假设压缩之后f[i]=∑x[j]∗f[i−pj]+Tf[i]=\sum x[j]*f[i-p_j]+T, pjp_j为某些值,x[j]x[j]为系数,T原创 2017-11-09 16:18:27 · 681 阅读 · 0 评论 -
模板整理: 高斯消元
表示不会线性基,只会最最辣鸡的高斯消元(应该够了吧QAQ) 高斯消元只要会手动模拟考场推也是可以的。。 主要想法就是找对角线,一个个往下找, 如果当前这个(i,i)的值非0,就其它行全部消去第i列(把第i列的值都减成0)即可。 最后求解的时候,从下往上(因为是个倒三角)求解即可, 代码写得还是挺明白的。 ……还有一种开关灯01啥啥的我似乎还不怎么会。。 还有自由变元, 消完之后有i行原创 2017-11-09 15:56:42 · 318 阅读 · 0 评论 -
模板整理: 图论---差分约束
详细教程看这个,挺不错 到联赛了还要看一遍教程的我是不是没救了= = 主要就记住一个套路, 如果不等式形如x[i]+b<=x[j], 那么从i向j连一条b的边,跑最长路; 如果不等式形如x[i]+b>=x[j], 那么从i向j连一条b的边,跑最短路。 求a[x]-a[y]的最值,跑x~y的最长/短路。 如果每个点还有额外限制(比如>=1), 可以考虑建立超级源啊超级汇啊之类的。原创 2017-11-09 15:40:02 · 335 阅读 · 0 评论 -
模板整理: 图论---网络流/最小费用最大流
NOIp……应该不会考这东西吧QAQ 考了感觉药丸。。 还是整一个比较好~ 网络流有个特点就是,最坏的上界一般都是达不到的。 1.FF 思路是每次增广1的流量,很慢的,因为容量一般挺大, 没写过,就没模板了。。O(|f|∗m|f|*m)(似乎是,有点忘了) 2.EK 思路是随意找一条增广路径,然后增广即可。 最坏O(m2nm^2n)。 就写过一次……还是早期写的……真是有原创 2017-11-09 09:58:20 · 499 阅读 · 0 评论 -
模板整理: 矩阵乘法
矩阵乘法是个灰常灰常有用的东西! 先是定义: 矩阵乘法设A,B均为矩阵,An,Am分别表示矩阵A的行数和列数那么只有当Am=Bn的时候,A∗B才是可行的,设Am=Bn,C=A∗B,那么Cn=An,Cm=Bm,C(i,j)=∑A(i,k)∗B(k,j)矩阵乘法\\设A,B均为矩阵,A_n,A_m分别表示矩阵A的行数和列数\\那么只有当A_m=B_n的时候,A*B才是可行的,\\设A_m=B原创 2017-11-09 09:27:27 · 536 阅读 · 0 评论 -
模板整理:数论---组合数/欧几里得/孙子定理/费马小定理/欧拉定理及相关
对于组合数C(n,m),意为在n个球中任取m个的方案数, 当n < m时C(n,m)=0, 当n>=m时, C(n,m)=n!m!(n−m)!C(n,m)=\frac {n!}{m!(n-m)!} 组合数的递推式,通常用的一种: C(n,m)=C(n−1,m−1)+C(n−1,m)C(n,m)=C(n-1,m-1)+C(n-1,m) 讨论第n个球取不取即可得出递推式。 通常原创 2017-11-09 08:39:57 · 468 阅读 · 0 评论 -
模板整理:数论---线性筛素数,线性筛欧拉函数
线性筛是一个比较有用的东东, 所以得好好记住辣。。。 对于普通的筛素数方法, 就是枚举一个i,然后和所有已知素数prime[j]相乘, i*prime[j]就不是素数了,去掉即可。 如果这样的话是基本O(nlogn)的, 线性筛就是在这个筛法的基础上加入了一个优化, 每次让一个数只被它的最小质因子筛一次, 也就是如果i%prime[j]=0,直接break即可。 这样的话就能优化到原创 2017-11-07 19:38:46 · 556 阅读 · 0 评论 -
最小费用最大流 模板
费用流(MCMF)这东西很早之前就想写了……但是一直慵懒。在最大流找增广路的过程中,同时要求了最小费用,那么我们找的增广路就找费用最小的那一条。一般最小费用流的“费用”形式是:每条边有单位流量的代价。那么求出了S~T的增广路里,cost最小的一条,只要用增广的流量乘上这条增广路里每条边的cost即可。如何找cost最小的一条呢?用SPFA来寻找最短路。注意了原创 2017-09-04 20:48:03 · 1776 阅读 · 0 评论 -
左偏树 模板
左偏树:左偏树是一种可并堆,其具有堆的性质。以下都以小根堆为例。对于结点x,val[x]我们知道如果两个堆暴力合并是gg的。左偏树的特点:顾名思义,堆是一种树形的结构,而左偏树就是树的结点倾向左边的特殊堆。左偏树一些性质不说了,网上基本都有,推荐某篇论文……(忘了= =)每次合并的时候,只要一直往右边找并且合并,能够发现最均衡的左偏树是完全二叉树,所原创 2017-08-15 20:29:42 · 352 阅读 · 0 评论 -
tajan离线求LCA 模板
lca:最近公共祖先求LCA一般有用倍增的和tarjan的,倍增的是O(nlogn)的但是可以在线;tarjan是O(n+Q)的但是必须离线。应当对于不同的题目适当选择。tarjan算法的主要思想……是从要求的一对点的访问过程求来的。比如以一个点u为根的多个小子树内,不同小子树内的点对的lca都是u。那么可以dfs下去,回上去的时候用并查集合并整棵子树。原创 2017-08-25 19:57:56 · 308 阅读 · 0 评论 -
模板整理: 图论---tarjan缩点/桥/割点
tarjan这算法没学好……气哦 目前掌握得还可以的只有缩点, 每次桥和割点只能手推。。还总是推错。 说实话也没什么难的啊。。 缩点,桥,割点之前的学习笔记 先是缩点,也就是强连通分量双联通分量这些东西。 只讨论强连通分量。 比较好理解,用DFN[u]表示到达u的时间(时间戳), LOW[u]表示u及u的子树中能到达的最早时间戳. 那么想象一下,一个强连通分量,里面有某个u,原创 2017-11-09 13:21:26 · 719 阅读 · 0 评论