
suan'd'f
UFBoon
这个作者很懒,什么都没留下…
展开
-
Lucas求组合数
递推预处理所有数的逆元。long long C(int n,int m){ if(n<m) return 0; if(n<MOD && m<MOD) return fac[n] * inv[m] % MOD * inv[n-m] % MOD ; return C(n/MOD,m/MOD) * C(n%MOD,m%MOD) % MOD ;}void P原创 2016-08-06 16:14:21 · 394 阅读 · 0 评论 -
KMP算法
char A[1000005],B[1000005];int next[1000005];inline void Get_Next(char s[]){ int i,j;j=-1; next[0]=-1;int L=strlen(s); for(i=1;i<L;i++) { while(j>=0&&s[j+1]!=s[i]) j=next[j]; if(s[j+1]==s[i原创 2016-08-06 16:21:33 · 300 阅读 · 0 评论 -
高斯消元
普通高斯消元:double a[1005][1005];double b[1005];double value[1005];inline void Swap(int A,int B){ double temp; for(int i=1;i<=N;i++) swap(a[A][i],a[B][i]); swap(b[A],b[B]);}inline int Gauss()原创 2016-08-15 13:44:23 · 395 阅读 · 0 评论 -
后缀数组
int n, a[MAXN], sa[MAXN], rk[MAXN], ht[MAXN], st[MAXN][MAXLOGN + 1];inline void suffixArray() { static int set[MAXN]; std::copy(a, a + n, set); std::sort(set, set + n); int *end = std原创 2016-10-14 08:44:59 · 360 阅读 · 0 评论 -
OR卷积
状压dp做inline void prepare(){ memset(dp,0,sizeof(dp)); for(int i=1;i<=N;i++) dp[f[i]]=1; for(int i=0;i<=20;i++) for(int j=0;j<=(1<<20);j++) { if((1<<i)&j) dp[j^(1<<i)]=max(dp[j],dp[j^原创 2016-10-14 09:08:37 · 448 阅读 · 0 评论