模板
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
线性筛μ的模板
时效O(n)O(n) 因为质数的μ都是-1,然后一个数t里面如果有多个质数=zhi[j]*i,i是有很多个与zhi[j]互异的质数相乘的,那么μ[t]=-μ[i]。miu[1]=1;qian[1]=1; fo(i,2,n){ if(!bz[i]){ zhi[++zhi[0]]=i; miu[i]=-1; }原创 2016-03-18 21:46:34 · 598 阅读 · 0 评论 -
处理两数相乘的黑科技
黑科技来源我们发现如果两个数都接近long long,乘起来就爆掉了,那该怎么办。黑科技快速乘简介这个应该是白科技。 虽然叫快速乘,但是十分的慢。 速度比快速幂多一个log 。 比如说是a*b,我们设f(i)=a*i 那么把b拆一下,f(b)=f(b/2) * 2+a *(b mod 2) 递归的做Codell qsc(ll x,ll y){ ll z=0; if(y==原创 2016-03-16 14:21:14 · 1597 阅读 · 0 评论 -
字符串hash的用处
简介hash(哈希)。 把字符串用一种特定的方式放到一个数组里面。用处我目前学的短,只知道两个用处。1、字符串判重相信很多人都会。2、可以快速判断同一个字符串中的两段字符串是否相等maxx=10007;...fo(len,1,n)h[len]=h[len-1]*maxx+s[len];//c++可以不用打hash这个十分的爽,因为能自动的弹出一个数(可正可负)fo(len,1,n)g[i原创 2016-04-28 19:58:42 · 5212 阅读 · 0 评论 -
LCA模板
DescriptionLCA就是在一棵树中求x与y的最近公共祖先,复杂度O(nlogn)O(n\log n) 首先f[i][j]表示i节点向上跳2j2^j个能跳到f[i][j],deep[i]表示i在树中的深度。 步骤:1、首先把x和y跳到同一个深度当中;2、然后使x和y调到同一个点中。Code发现了一种十分优美的LCA打法。int lca(int x,int y){ int i;原创 2016-04-19 18:14:23 · 580 阅读 · 0 评论 -
splay旋转模板
splay旋转模板int doo(int x){ if (tree[f[x]][0]==x) return 0;else return 1;}void maintain(int x){ da[x]=max(a[x],max(da[tree[x][0]],da[tree[x][1]])); shu[x]=shu[tree[x][0]]+shu[tree[x][1]]+1;原创 2016-04-28 22:01:25 · 660 阅读 · 0 评论 -
欧拉函数的线筛模板
为什么这样筛我们知道n=∏pkiin=\prod p_i^{k_i} 那么φ(n)=∏pki−1i∗(pi−1)\varphi(n)=\prod p_i^{k_i-1}*(p_i-1),易证 所以 假设n=i*j,j是质数 如果i是j的倍数,那么就是本来就含有1个j,又多了一个j,根据公式,所以是φ(n)=φ(i)∗j\varphi(n)=\varphi(i)*j 否则,因为本来没有j,然原创 2016-03-22 12:43:32 · 1016 阅读 · 0 评论