摘要: 一个数有原根时,有 \(\varphi(\varphi(m))\) 个原根。 有原根的充要条件是, \(m=2,4,p^n,2p^n\) 其中p是奇质数。 求一个最小的原根,从 \(1\) 枚举到 \(m^{0.25}\) ,然后若 \(gcd(i,m)=1\) 并且对于 \(\varphi(m)\ 阅读全文
posted @ 2021-01-16 22:39 purinliang 阅读(703) 评论(0) 推荐(0) 编辑
摘要: 事实上是并查集套一个可持久化数组。 int a[100005]; struct SegmentTree { #define ls lch[o] #define rs rch[o] static const int MAXN = 1e5 + 10; static const int MAXM = 2e 阅读全文
posted @ 2021-01-16 10:56 purinliang 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 算法的原理:把dfs的点分为三类: vis[u]=0 表示这个点从未访问 vis[u]=1 表示这个点在栈中,是u点的祖先 vis[u]=2 表示这个点已经退栈 Tarjan算法把lca(x,y)的查询丢给x和y的查询数组记录。后序遍历,总是会先遍历y再遍历x,那么vis[y]=2,要么x是y的祖先 阅读全文
posted @ 2021-01-16 09:06 purinliang 阅读(97) 评论(0) 推荐(0) 编辑