随笔分类 -  学习笔记

摘要:最小斯坦纳树,是在无向图中,花费最小的代价,联通给定的k个关键点,组合优化问题 答案一定是一棵树,若存在环,则其中任意一条边可以删去且答案变小 状压dp,设f[i][s]为以i为根的子树包含几何状态s的最小花费,分类讨论转移: 1. i的度数为1,枚举树上与i相邻的点j,用f[j][s]+f[j][ 阅读全文
posted @ 2022-11-14 17:49 半步蒟蒻 阅读(62) 评论(0) 推荐(0)
摘要:回文树(EER Tree,Palindromic Tree)亦称回文自动机,用于存储一个串中的所有回文子串。 由于回文串可能有奇有偶,于是分为两棵树进行构建,偶跟编号为0,长度为0,fail指向奇根,奇根编号为1,长度为-1,fail指向自身。 fail指向的是该节点的最长回文后缀,新加入字符时跳f 阅读全文
posted @ 2022-11-14 17:48 半步蒟蒻 阅读(84) 评论(0) 推荐(0)
摘要:一般常用SPFA 对于求最大值 当然要跑最短路 每个不等式转化为a-b<=x 连边b->a,val=x dis[a]>dis[b]+x才能松弛为 dis[a]<=dis[b]+x 当求最小值时 就跑最长路 每个不等式转化为a-b>=x 连边b->a,val=x dis[a]<dis[b]+x才能松弛 阅读全文
posted @ 2022-11-14 17:48 半步蒟蒻 阅读(19) 评论(0) 推荐(0)
摘要:通过在字符串之间的每个空位内插入字符,是的奇数和偶数成为一样得情况,从而能够统一处理。 用len[]记录每个点能够扩展出的最长半径,mx记录扩展到的最远右端点,id记录mx为右端点时的mid,即对称轴,设i关于mid的对称轴为j。 关于i和mx的位置进行分类讨论: 若i在mx右边,则直接进行暴力。 阅读全文
posted @ 2022-11-14 17:48 半步蒟蒻 阅读(29) 评论(0) 推荐(0)
摘要:AC自动机以trie为基础,首先将若干模式串插入trie树中,之后构建fail指针和AC自动机,即由trie树变为trie图。 fail指针的定义是,对于当前点x,从根到x形成的字符串为s,x的fail指针指向y,其中满足根到y形成的字符串t是s的最长后缀。 BFS构建AC自动机,第二层的所有节点的 阅读全文
posted @ 2022-11-14 17:48 半步蒟蒻 阅读(69) 评论(0) 推荐(0)
摘要:struct Vector{ double x,y; const double pi=acos(-1),eps=1e-10; inline Vector(double a=0,double b=0):x(a),y(b){} inline Vector operator=(Vector a){ ret 阅读全文
posted @ 2022-11-14 17:48 半步蒟蒻 阅读(70) 评论(0) 推荐(0)
摘要:hash函数,通常用于将字符串映射到整数的函数,一般将值域映射到1e9或1e18以内,尽量避免哈希冲突并且便于比较。 选取哈希进制base和模数mod,尽量选取质数,对于一个字符串s的哈希值就是f(s)=sum(i=1->l)(s[i]*base^(l-i)%mod). 比较两个字符串相等时,可以直 阅读全文
posted @ 2022-11-14 17:48 半步蒟蒻 阅读(780) 评论(0) 推荐(1)
摘要:1.对于取模中有减法的操作,要加上$mod$再$%mod$,不然会有极大概率出现负数 2.对于有关组合数的预处理中,$facinv[N]=po(fac[N],mod-2,mod)$,注意是$N!$的$mod-2$次幂,而不是$N$的$mod-2$次幂 3.对于递归分治之类的函数,如果写非$void$ 阅读全文
posted @ 2022-11-14 17:45 半步蒟蒻 阅读(116) 评论(0) 推荐(0)
摘要:Kruscal最小生成树算法,将边按照权值进行排序,每次贪心优先选择权值较小的边,并依次连接,若出现环则跳过,边数达到节点数-1时即可停止。时间复杂度O(Mlog2(M)) inline int kruskal(){/*最小生成树用于无向图,连边时可以按照单向边来连*/ sort(e+1,e+1+t 阅读全文
posted @ 2022-11-14 17:44 半步蒟蒻 阅读(86) 评论(0) 推荐(0)
摘要:带修莫队,用于支持单点修改修改的区间查询,块长大小一般n的2/3次方理论最优,排序时先按l,再按r,最后按t升序排列 询问区间内不同颜色数,单点修改成另一颜色 #include<bits/stdc++.h> using namespace std; const int N=2e6+6; int n, 阅读全文
posted @ 2022-11-14 17:44 半步蒟蒻 阅读(51) 评论(0) 推荐(0)
摘要:莫队,对询问离线并进行合理的排序,处理完一个区间的询问后,可以以常数的时间复杂度转移到下一个询问的答案,通常初始化l=1,r=0,奇偶化排序 离线询问结构体 struct ask{ int l,r,t,ans;/*如果每个询问不需要拆成多个,那么可以直接在这里记录答案*/ inline bool f 阅读全文
posted @ 2022-11-14 17:43 半步蒟蒻 阅读(22) 评论(0) 推荐(0)
摘要:struct Matrix{ int n,m,mod,a[N][N]; inline Matrix(int x=0,int y=0,int p=0){ memset(a,0,sizeof(a)); n=x,m=y,mod=p; } inline void reset(int x,int y,int 阅读全文
posted @ 2022-11-14 17:43 半步蒟蒻 阅读(105) 评论(0) 推荐(0)
摘要:多源最短路,Floyed本质是dp,通过不断的松弛操作来获得最优,时间复杂度O(N^3)。 memset(w,0x3f,sizeof(w));/*初始化正无穷*/ for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>w[i][j]; for(int i=1; 阅读全文
posted @ 2022-11-14 17:42 半步蒟蒻 阅读(98) 评论(0) 推荐(0)