- 博客(23)
- 收藏
- 关注
原创 自然数幂和
自然数幂和O(k2)O(k^2)O(k2)递推做法首先令S(n,k)=∑i=1nikS(n,k)=\sum_{i=1}^{n}i^kS(n,k)=∑i=1nik,那么我们把S(n,k+1)S(n,k+1)S(n,k+1)给拆开,可以得到如下的方程:$$\begin{aligned}S(n,k+1) & =\sum_{i=1}{n}i{k+1} \S(n,k+1) & =\sum_{i=2}{n}(i-1+1){k+1}+1\S(n,k+1) & =\sum_{j=0}
2022-03-29 21:45:44
339
原创 多项式全家桶
多项式全家桶FFT和NTT首先最基本的FFT和NTT什么的应该能够默写了吧。牛顿迭代法假如有几个关于A(x)A(x)A(x)的函数ggg,现在要求解方程g(A(x))≡0mod xng(A(x))\equiv 0 \mod x^ng(A(x))≡0modxn,那么不妨先求出方程g(A0(x))≡0mod x⌈n2⌉g(A_0(x))\equiv 0\mod x^{\lceil \frac{n}{2}\rceil}g(A0(x))≡0modx⌈2n⌉的解A0(x)A_0(x)A0(x),那
2022-03-29 10:13:41
323
原创 折线法学习笔记
折线法从卡特兰数入手,卡特兰数是没有上界要求的,所以只需要对触碰到y=−1y=-1y=−1的情况去掉即可。在卡特兰数中,把折线从第一个碰到y=−1y=-1y=−1的位置开始翻折其实是一种一一映射的想法,对于所有不合法的方案都可以映射到一条到(2n,−2)(2n,-2)(2n,−2)的折线,而每一条这样的折线有可以唯一映射回一条不合法的路径。在有上界的情况,也是用翻折+映射的办法,但是需要再用到容斥。一个比较普通的想法是把碰到y=my=my=m的也按同样的方法翻折然后计数,但是这样会把即碰到y=−1y=
2022-03-19 19:39:55
886
原创 拓扑序下求原排列和逆排列的字典序最大/小的等价性
在PPT的Page8可以看到“排列在拓扑序的限制下,原排列和逆排列的字典序最大/小的等价性”这里证明一下假设现在有一个DAG,容易知道这个DAG的任意一个拓扑序都是排列,不妨假设要最大化拓扑序。把这个排列记作PPP也就是要maxP\max PmaxP,记P−1P^{-1}P−1表示PPP的逆排列,逆排列定义为∀1≤i≤n,P−1[P[i]]=i\forall 1\le i\le n,P^{-1}[P[i]]=i∀1≤i≤n,P−1[P[i]]=i。不妨用归纳法证明,显然∣V∣=1|V|=1∣V∣=
2022-03-19 19:38:04
126
原创 莫队二次离线学习笔记
莫队二次离线一般套路还是正常的莫队,但是如果在移动l,rl,rl,r的同时计算答案复杂度会炸掉,那么考虑莫队二次离线,当然要用的话还要满足答案能够差分。下面是算法的流程。以rrr向右移动为例,当rrr移向r+1r+1r+1时,其实就是把r+1r+1r+1在[l,r][l,r][l,r]上的贡献加入,不妨把这个记作([l,r],r+1)([l,r],r+1)([l,r],r+1),更一般的([l,r],x)([l,r],x)([l,r],x)表示xxx在区间[l,r][l,r][l,r]上的贡献,根据
2022-03-19 19:36:03
228
原创 拉格朗日反演学习笔记
拉格朗日反演证明对于两个函数f(x),g(x)f(x),g(x)f(x),g(x),若f(g(x))=xf(g(x))=xf(g(x))=x且f(x),g(x)f(x),g(x)f(x),g(x)的常数项为000,一次项不为000,那么称这两个函数互为复合逆。当然,根据f(g(x))=xf(g(x))=xf(g(x))=x可以推出g(f(x))=xg(f(x))=xg(f(x))=x,证明:f(g(f(x)))=f(x)f(g(f(x)))=f(x)f(g(f(x)))=f(x),令y=f(x)y=f(
2022-03-19 19:35:23
473
原创 二项式反演学习笔记
二项式反演引入记AcA^cAc表示AAA的补集。已知简单的容斥原理为:∣⋃i=1nAi∣=∑p1<p2<⋯<pm∣⋂j=1mApj∣(−1)m+1|\bigcup_{i=1}^{n} A_i|=\sum_{p_1<p_2<\dots<p_m}|\bigcap_{j=1}^{m}A_{p_j}|(-1)^{m+1}∣i=1⋃nAi∣=p1<p2<⋯<pm∑∣j=1⋂mApj∣(−1)m+1根据集合交并补的意义可知:∣⋂i=
2022-03-19 19:34:41
335
原创 杜教筛学习笔记
杜教筛杜教筛用于计算函数的前缀和。若需要计算前缀和的函数为fff,前缀和函数为SSS,那么有S(n)=∑i=1nf(i)S(n)=\sum_{i=1}^{n}f(i)S(n)=∑i=1nf(i)。现在通过构造一个合适的函数ggg,优化其计算过程。对于任意和两个函数f,gf,gf,g,以下均成立:∑i=1n∑d∣ig(d)f(id)=∑i=1ng(i)∑i=1⌊ni⌋f(i)=∑i=1ng(i)S(⌊ni⌋)g(1)S(n)=∑i=1n(g∗f)(i)−∑i=2ng(i)S(⌊ni⌋)\sum_{
2022-03-19 19:33:52
119
原创 单纯形学习笔记
单纯形一般形式单纯形有如下形式:max∑i=1naixi∀1≤i≤m,∑j=1nbi,jxj≤ci∀1≤i≤n,xi≥0\max \sum_{i=1}^{n} a_ix_i\\\forall 1\le i\le m,\sum_{j=1}^{n}b_{i,j}x_j\le c_i\\\forall 1\le i\le n,x_i \ge 0maxi=1∑naixi∀1≤i≤m,j=1∑nbi,jxj≤ci∀1≤i≤n,xi≥0不妨引入mmm个变量xn+1,…,xn+mx_{n
2022-03-19 19:33:19
138
原创 从单纯形联想到的一种简单线性规划的费用流做法
从单纯形联想到的一种简单线性规划的费用流做法使用条件观察一下单纯形中各项系数,假如对于所有xix_ixi,其在线性规划中的系数只有+1+1+1或−1-1−1,并且两者至多出现一次,那么就可以用费用流来解决。当然,如果在本身的线性规划中并不成立,但是在对偶问题中成立,也是可以做的。使用方法用费用流中的一个点来描述一个限制,一个限制形如:∑i=1naixi[≥/=/≤]c\sum_{i=1}^{n}a_ix_i[\ge/=/\le]c∑i=1naixi[≥/=/≤]c(中间的符号三选一);用一
2022-03-19 19:32:28
226
原创 Min_25筛学习笔记
Min_25筛学习笔记一般套路前提和目的对一个积性函数f(x)f(x)f(x),求其前缀和函数S(n)=∑i=1nf(i)S(n)=\sum_{i=1}^{n}f(i)S(n)=∑i=1nf(i),并且f(p)f(p)f(p)是一个关于ppp的多项式,f(pk)f(p^k)f(pk)能够快速计算。实现令PiP_iPi表示第iii个质数,PPP是质数集。定义如下函数:s(n,j)=∑i=2nf(n)[minp∣ip>Pj]g(n,j)=∑i=2nf(i)[i∈P∨minp∣ip>
2022-03-19 19:31:51
101
原创 ABC 217
ABC 217快乐ABC,不得不说这题面比Codeforces舒服多了,简洁明了。A - Lexicographic Order字符串比较,用C++自带的string就好了,没脑子题。#include<bits/stdc++.h>using namespace std;string s,t;int main(){ cin>>s>>t; puts(s<t?"Yes":"No");}B - AtCoder Quiz这个也是弱智题了吧。#inc
2021-09-04 22:15:28
328
1
原创 NTT快速数论变换
NTTNTTNTTNTT和FTTFTTFTT十分相似,在FTTFTTFTT中使用了单位复根ω\omegaω来取函数值,在NTTNTTNTT中则使用原根ggg来取函数值。在NTTNTTNTT中,所有的数都是模意义下的。ggg的一些性质g1,g2,⋯ ,gp−1g^1,g^2,\cdots,g^{p-1}g1,g2,⋯,gp−1在模ppp意义下互不相同根据欧拉定理可知gp−1≡1g^{p-1} \equiv 1gp−1≡1用ggg来替换ω\omegaω实现FFTFFTFFT到NTTNTTNTT的
2021-08-23 22:09:38
368
原创 FWT快速沃尔什变换
FFTDFT把系数表示把转化为点值表示法。有多项式fn(x)=∑i=0n−1aixif_n(x)=\sum_{i=0}^{n-1}a_{i}x^{i}fn(x)=∑i=0n−1aixi,其中nnn是一个222的幂,现在要快速求出∀i,0≤i<n\forall i,0 \le i <n∀i,0≤i<n的f(ωni)f(\omega_{n}^{i})f(ωni)。首先把fn(x)f_n(x)fn(x)的系数按照奇偶性分成两组,分别为hn2(x)=∑i=0n2−1a2ixih_
2021-08-23 22:08:47
186
原创 FFT快速傅里叶变换
DFT把系数表示把转化为点值表示法。有多项式fn(x)=∑i=0n−1aixif_n(x)=\sum_{i=0}^{n-1}a_{i}x^{i}fn(x)=∑i=0n−1aixi,其中nnn是一个222的幂,现在要快速求出∀i,0≤i<n\forall i,0 \le i <n∀i,0≤i<n的f(ωni)f(\omega_{n}^{i})f(ωni)。首先把fn(x)f_n(x)fn(x)的系数按照奇偶性分成两组,分别为hn2(x)=∑i=0n2−1a2ixih_{\fr
2021-08-23 21:51:35
736
原创 【GDSOI 2016】第一题 互补约数
用NNN和nnn加以区分F(N)F(N)F(N)和f(n)f(n)f(n),中间步骤中的在字母右上角加撇的根据是某些分式需要整除。F(n)=∑n=1Nf(n)=∑n=1N∑d∣ngcd(n,nd)=∑k=1Nk∑k∣n∑d∣n[gcd(d,nd)=k]=∑k=1nk∑n′=1⌊Nk⌋∑d∣(kn′)[gcd(d,nd)=k]=∑k=1nk∑n′=1⌊Nk⌋∑d∣(kn′)[gcd(dk,ndk)=1]=∑k=1Nk∑n′=1⌊Nk⌋∑d′∣n′[gcd(d′,n′kd′)=1]=∑k=1Nk∑n′=1⌊N
2021-07-13 21:48:22
109
2
原创 平方和公式
平方和公式∑i=1ni2=2n3+3n2+n3\sum_{i=1}^{n}i^2=\frac{2n^3+3n^2+n}{3}i=1∑ni2=32n3+3n2+n证明如下:(a+1)3=a3+3a2+3a+1(a+1)3−a3=3a2+3a+1(a+1)^3=a^3+3a^2+3a+1\\(a+1)^3-a^3=3a^2+3a+1(a+1)3=a3+3a2+3a+1(a+1)3−a3=3a2+3a+1∑i=1n(i+1)3−i3=∑i=1n3i2+3i+1(n+1)3−1=∑i=1n3i
2021-02-03 21:02:40
1159
原创 CF Edu94Div2(1400)C Binary String Reconstruction
题面题目大意有一个01串w,还知道一个定值x通过这个串可以生成一个新的01串s,长度与w相同,方法如下:(假设n是串的长度)if (i-x>=1 && w[i-x]) s[i]=1;else if (i+x<=n && w[i+x]) s[i]=1;else s[i]=0;现在知道生成的串s,求原串w,如果无解输出-1题解还是一道比较好想的题观察发现,如果s[i]=0,那么w[i-x]和w[i+x]一定是0,所以可以先用这个方法把w中必须是
2020-08-26 14:04:55
492
2
原创 CF Edu94Div2(1400)B RPG Protagonist
题面题目大意现在知道p,f,cnts,cntw,s,w的值并且有不等式方程组s1*s+w1*w<=ps2*s+w2*w<=fs1+s2<=cntsw1+w2<=cntw求s1+s2+w1+w2的最大值题解假设s<w可以枚举s1,然后根据贪心算出w1,s2,w2的值,如下:w1=min(cntw,(p-s1*s)/w)s1=min(cnts-s1,f/s)w2=min(cntw-w1,(f-s2*s)/w)然后就更新答案就好了代码#inclu
2020-08-26 13:31:34
542
1
原创 CF Edu94Div2(1400)A String Similarity
CF Edu94 Div2 A. String Similarit题面题目大意给出字符串s,长度为2*n-1定义两个01串(a和b)相似为:存在一个位置i,使得a[i]=b[i]求一个01串w,使得w和s[1…n],s[2…n+1],s[n…2*n-1]这n个串相似数据保证有解题解看到网上有神仙构造法,这里讲一下我的解法考虑到两个01串不相似,当且仅当一个串是另一个串的取反,那么对于从s中截取的n个串,它们取反后的串是不能选的,剩下的串都是可行的,那么不可选取的串的个数是n个(把这n个串放
2020-08-26 09:50:02
231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人