摘要: SG函数 const int MAXN = 600000; int n; int sg[MAXN]; int SG(int x) { // 默认值为-1 if(sg[x] != -1) return sg[x]; bool used[32] = {}; // 这里写递归到后继状态 for(int i 阅读全文
posted @ 2021-01-17 22:56 purinliang 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 后缀排序 我的字符串全部都是下标从1开始的, 千万要小心。 字符串 \(s[1, n]\) 中,有 \(n\) 个后缀,他们分别是 \(s[1, n], s[2, n], s[3, n], ..., s[i, n], ..., s[n, n]\) 。 对这 \(n\) 个后缀进行排序,由于他们长度不 阅读全文
posted @ 2021-01-17 18:49 purinliang 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 凯莱定理:n个点的完全图的生成树有n^(n-2)个。 长度为n-2,值域为[1,n]的Prufer序列和一个n个节点编号分别为[1,n]的无向连通图的生成树双射。 无根树变Prufer:每次选择一个编号最小的叶子删除他,在序列中记录其父亲,直到剩下最后的两个点。(假如再做一步,则Prufer序列一定 阅读全文
posted @ 2021-01-17 18:39 purinliang 阅读(120) 评论(0) 推荐(0) 编辑
摘要: Euler函数的定义:小于等于n的与n互质的正整数的个数,或者小于n的与n互质的自然数的个数。这两个结果都是指向 \(gcd(0,1)=1\) 也就是说 \(\varphi(1)=1\) 。 \(\varphi(p)=p-1\) \(\varphi(p^k)=p^k-p^{k-1}=p^{k-1}( 阅读全文
posted @ 2021-01-17 14:49 purinliang 阅读(964) 评论(0) 推荐(0) 编辑
摘要: 可持久化的单点修改线段树,同时也是可持久化数组 验证:https://www.luogu.com.cn/problem/P3919 ver[u]表示版本u的线段树根的位置。 所有的public操作都产生一个新的版本。 Build的时候生成不超过2n个节点,每次修改生成不超过logn个节点。 MAXM 阅读全文
posted @ 2021-01-17 05:37 purinliang 阅读(75) 评论(0) 推荐(0) 编辑