摘要:
最简单的莫队入门,洛谷数据有加强,吸氧+读优莽过去 注释见代码 阅读全文
摘要:
对于KMP算法的学习,在寒假时我还是搞不太明白,但几个月之后,对于它的理解又更近了一步。 首先是对于子串的自我匹配,求一个fail数组,fail[i]对于字符串SS的前ii个字符构成的子串,既是它的后缀又是它的前缀的字符串中(包括他),最长的长度记作fail[i]。 举个例子,abcdabc中fai 阅读全文
摘要:
Tarjan求LCA,打起来真的爽 阅读全文
摘要:
#include using namespace std; const int maxn=450005; struct node{ int nxt; int to; }tree[maxn*2]; struct node1{ int LCA; int nxt; int to; }qtree[maxn*2]; int fa[maxn]; int n,m,p,x... 阅读全文
摘要:
树的直径的定义: 对于求树的直径,我们有两种方法,使用两次dfs遍历和bfs遍历。 我选用的是dfs遍历,两次dfs遍历。 第一次:任选一个节点,找到最长路的节点去。 第二次:以刚刚走到的那个节点为原点,再跑一遍最长路。 某位Dalao博客中对于其的证明 阅读全文
摘要:
首先一看应该是组合数的问题,但我们选出m个数之后,其他的数就不能再排在它原本的位置,所以又需要错排求出方案数。 错牌公式递推式: 有d[2]=1,d[0]=1,d[1]=0。d[i]=(i-1)*(d[i-1]+d[i-2]) 又由乘法原理可得出总方案数。 注意:阶乘,逆元,错排都要预处理出来,否则 阅读全文
摘要:
模板题,最重要的是BSGS算法 阅读全文
摘要:
这道题明显是组合数的题目,但对于组合数的考察还是比较灵活,网上有一篇博客里讲的比较清楚 阅读全文
摘要:
对于组合数,往往要用到阶乘,但是阶乘的数据极其之大,所以要用取模的办法防止数据溢出。 而卢卡斯定理在这个时候就有很大的用处了,来看百度百科上的简介。 代码如下 Luogu P3807 阅读全文
摘要:
noip原题 扩欧入门裸题,题中的同余方程看作ax+by=1,记住一个重要的结论形如ax+by=c的方程的最小正整数解为(x*(c/gcd(a,b))%abs(b/gcd(a,b))+abs(b/gcd(a,b)))%gcd(b/gcd(a,b))可以看我之前有关扩欧算法的博客。 阅读全文