![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模板
Cichard
这个作者很懒,什么都没留下…
展开
-
树的直径,树的重心
转载 一棵树最多有两个重心 这个代码可直接求得 void getCentroid(int u, int fa) { siz[u] = 1; wt[u] = 0; for (int i = head[u]; ~i; i = nxt[i]) { int v = to[i]; if (v != fa) { getCentroid(v, u); siz[u] += siz[v]; wt[u] = max(wt[u], siz[v]); }转载 2020-09-18 12:03:24 · 120 阅读 · 0 评论 -
组合数学 模板
// 求C(n,m) ll qpow(ll a, ll b){ ll res = 1; while(b>0){ if(b&1) res = (res*a)%mod; a = (a*a)%mod; b >>= 1; } return res; } ll comb(ll n, ll m){ ll tmp = 1, res = 1; for(int i = 1; i <= n; i++) res = res*i%mod; for(int i = 1; i原创 2020-09-07 08:24:05 · 123 阅读 · 0 评论 -
线段树模板
这里写自定义目录标题新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 在这里插入代码片# 欢迎使用Markdow...原创 2020-08-28 10:38:43 · 77 阅读 · 0 评论 -
AC_automaton,AC自动机模板
/* AC自动机,对多个模式串匹配,查找给出的文本串有多少个出现在模式串中 最简单的模板,需要修改 */ const int N = maxn*8; //N表示n*m,n为模式串的个数,m为模式串的长度 struct AC_automaton { int tr[N][26], tot; int e[N], fail[N]; void init(){ memset(tr, 0, sizeof(tr)); memset(e, 0, si原创 2020-08-02 15:38:50 · 132 阅读 · 0 评论 -
字典树板子
/* 字典树的板子, insert表示原字符串, find表示在是否在原字符串中是否存在这样的一个字符串,或者前缀也可以验证 (不然直接一个map或者hash就过了) */ struct Trie { int nex[maxn][26], cnt; bool exist[maxn]; // 该结点结尾的字符串是否存在 void insert(char *s, int l) { // 插入字符串 int p = 0; for (int i = 0; i < l;原创 2020-08-02 11:18:40 · 128 阅读 · 0 评论 -
异或最小生成树
/* 对于n个点的完全图,每两个点之间的距离等于两点的权值的异或和,求最小生成树 */ int n; struct XorTrie{ int dfn = 0; int t[maxn*30][2]; int L[maxn*30],R[maxn*30],val[maxn*30],a[maxn]; void solve(){ sort(a+1, a+n+1); for(int i = 1; i <= n; i++) Insert(a[i],i);原创 2020-08-02 10:50:27 · 377 阅读 · 0 评论 -
大数重载运算符
定义inf类似与你定一个变量int #define ST static #define C const #define int int #define RT return #define OP operator #define LL long long #define B bool #define F friend #define TH this #define V void #define W while struct inf { ST C int mod=100000000; ST C原创 2020-07-27 11:55:32 · 121 阅读 · 0 评论 -
lcm+大数,n个数的最小公倍数
//这里的n是指你当前最大的数是多少,一般设为maxn vector<int> g_primeVector = { 2, 3, 5, 7, 11 }; // 素数表 bool UpdatePrimeVec() // 更新素数表 { if (g_primeVector.back() >= maxn){ return false; } for (int num = g_primeVector.back() + 1; num <= maxn; num原创 2020-07-27 10:42:55 · 168 阅读 · 0 评论