数学专测

第一测:
1.解方程
首先可以想到对于后\(n2\)个的话,有和没有是没区别的。
这样对于\(n1\)的部分做一个背包就可以了。
然后用做完的背包乘上一个组合数即可。
这样分不高。
正解是我们考虑进行子集反演。
我们将前\(n1\)个分子集进行计算。
怎么做?
\(g[S]\)为至少让\(S\)中的元素大于限制的方案数,\(f[S]\)为恰好\(S\)中的元素大于限制的方案数了。
这样就简单了。
我们知道:
\[t=\sum\limits_{i\in S}a_i\]
那么:
\[g[S]=\binom{n-t+K-1}{K-1}\]
这样我们知道:
\[g[S]=\sum\limits_{S\subseteq T}f[T]\]
子集反演得到:
\[f[S]=\sum\limits_{S\subseteq T}(-1)^{|T|-|S|}g[T]\]
也就是说:
\[f[\emptyset]=\sum\limits_{\emptyset\subseteq T}(-1)^{|T|}g[T]\]
现在唯一的问题就是计算组合数了。
关于任意模数组合数:https://www.cnblogs.com/Lrefrain/p/12149736.html
这样连组合数也解决了这就成了水题了。

2.宇宙序列
这个可以看出来是\(xorFWT\),直接暴力卷积就有\(50\)分了。
然后我打了一种找循环节的方法。
也就是判断某一个数在什么位置会循环。
由于我们要求的\(F^{2^{i}}\)中的\(i\)应该\(\mod \varphi(\varphi(10007))=5002\)
而且模数十分小,我们只需要对于每个数处理出循环节即可。
这样将每个位置的值将系数乘起来就可以得到最终的点值表达式,这样直接\(IFWT\)回来就可以了。

3.exp
期望神题,一辈子也想不出来。
首先可以直接用状压暴力。
然后。
我们设:
由于最后一个点的期望是确定的,是\(\frac{n-1}{2}\),所以直接枚举最后一个的位置即可。
\(g(l,r)\)\([l,r-1]\)均为\(.\),\([r]\)\(X\)的概率。
\(dp(l,r)\)为其他位置均不变,\([l,r-1]\)均为\(.\),\([r]\)\(X\)的期望。
\[num(l,r)\]\([l,r]\)之间的\(.\)的个数。
这样就可以转移了。
做一个区间\(dp\),枚举中间端点转移。
\[\begin{aligned} pr_{mid}&=\left(\frac{mid-l+1}{r-l+1}\right)^{num(l,mid)}\left(\frac{r-mid}{r-l+1}\right)^{num(mid+1,r)-1}\binom{num(l,mid)-1}{num(l,r)-2}g(l,mid)g(mid+1,r)\\ g(l,r)&=\sum\limits_{mid=k}^{r-1}pr_{mid}\\ dp(l,r)&=\frac{1}{g(l,r)}\sum\limits_{mid=l}^{r-1}pr_{mid}(dp(l,mid)+dp(mid+1,r)+\frac{mid-l}{2})\\ \end{aligned}\]
解释一下:
对于\(g\)来说,我们需要计算的\(pr_{mid}\)就是从\(mid\)进行转移来的概率。
这是一长串的含义是:
首先我要在让\(num(l,mid)\)个在左侧,而\(num(mid+1,r)-1\)个在右侧,这样分别乘两个分数的次幂表示概率。
其次我要在\(num(l,r)-2\)个位置中按照次序选择\(num(l,mid)-1\)个位置,剩下的留给右侧的,这样是一个组合数。
然后就是两侧的情况存在的概率了。
对于\(f\)来说我们记录\(g\)的原因就是为了正向推倒期望,最后对于各个情况的概率作出一个加权平均,所以最后要除以\(g(l,r)\)

第二测:
1.B
傻逼杜教筛随便推一下。
设:
\(g(n)\)\(gcd(\{a_i\})|n\)的方案。
\(f(n)\)\(gcd(\{a_i\})=b\)的方案。
那么:
\[g(n)\sum\limits_{n|d}f(d)\]
莫比乌斯反演得到:
\[f(n)=\sum\limits_{n|d}\mu(\frac{d}{n})g(d)\]
\[ans=f(1)\sum\limits_{i=1}^{n}\mu(i)g(i)\]
我们尝试求\(g(i)\)
\[g(i)=\binom{\lfloor\frac{n}{i}\rfloor+K-1}{K}\]
也就是我把\(K\)个普通数和\(\lfloor\frac{n}{i}\rfloor\)个标记数一起排序,这个数左侧有几个标记数就代表这个数的是\(i\)的多少倍,而我们要求这个数是正数,所以必须保证这个数左侧的标记数不能为\(0\)个,所以位置不能是第一个,也就是说从\(\lfloor\frac{n}{i}\rfloor+K-1\)个位置中选择\(K\)个位置。
所以就是那个组合数了。
那么:
\[ans=\sum\limits_{i=1}^{n}\mu(i)\binom{\lfloor\frac{n}{i}\rfloor+K-1}{K}\]
注意数据范围比较大,所以用杜教筛。
然后预处理一千万以内的阶乘,剩下的大于一千万的就用\(1000\)次暴力乘出来即可。

2.B君的回忆
是个结论题。
我考场上推出一种\(BSGS\)的写法。
然后细节没写对就挂了。
其实这个嵌套就是在求循环节。
因为转移矩阵只有四个位置,所以必然存在循环节(我不知道有多大,不过对于一个质数来说标程给出的循环节是不超过\(2p+1\))。
这样设循环节为:\(\varphi(p)\)我们得到这样一个式子:
\[A^{\varphi(p)+k}\equiv A^k(mod\ p)\]
也就是说:
\[A^{\varphi(p)}\equiv I(mod\ p)\]
我们设:
\[\varphi(p)=a\sqrt{2p+1}-b\]
\[A^{a\sqrt{2p+1}}\equiv A^{b}(mod\ p)\]
这个东西是\(BSGS\)的板子了。
这样这个循环节就可以用于更加内层的取模了,递归到最后一层再回代即可。
这样就有\(60\)了。
剩下的要用结论来优化了。
怎么做?
我们发现线性代数中的这个循环节\(f(a)\)和欧拉函数具有很相似的性质:
\[a\perp b,f(a)f(b)=f(ab)\]
这个是因为各个模数之间互不干扰。
\[f(p^k)=f(p)p^{k-1}\]
这个是因为\(p^k\)相当于将模长扩大了\(p^{k-1}\)倍。
这样的话我们对于某一个数\(n\)直接用几个结论将要求的范围变成这个数的全部质因子,这样复杂度大大降低了,我们再顺手求出小于\(\sqrt{p}\)个质数和他们的循环节大小,然后用哈希表存一下就可以了。

3.sanrd
首先对于\(b=0\)的情况:
\[\begin{aligned} ans_k&=\sum\limits_{i=0}^{n}A_i(dc^{2k}+e)^i\\ &=\sum\limits_{i=0}^{n}A_i\sum\limits_{j=0}^{i}\binom{i}{j}(dc^{2k})^je^{i-j}\\ &=\sum\limits_{j=0}^{n}(dc^{2k})^j\frac{1}{j!}\sum\limits_{i=j}^{n}i!A_i\frac{e^{i-j}}{(i-j)!}\\ \end{aligned}\]
后面的部分可以卷成一个多项式,没一项系数为\(B_j\)
所以:
\[\begin{aligned} ans_k&=\sum\limits_{j=0}^{n}(dc^{2k})^jB_j\\ &=\sum\limits_{j=0}^{n}d^jc^{2jk}B_j\\ &=\sum\limits_{j=0}^{n}d^jc^{(j+k)^2-j^2-k^2}B_j\\ &=\frac{1}{c^{k^2}}\sum\limits_{j=0}^{n}c^{(j+k)^2}\frac{d^jB_j}{c^{j^2}}\\ \end{aligned}\]
再次卷积就可以算出来了。

然后考虑\(b!=0\)的情况:
这样发现已经不是二项式形式了。
我们考虑把它换成二项式来进行展开。
\[bc^{4k}+dc^{2k}+e=b(c^{2k}+h)^2+w\]
那么:
\[h=\frac{d}{2b},w=\frac{4be-d^2}{4b}\]
\[\begin{aligned} ans_k&=\sum\limits_{i=0}^{n}A_i(b(c^{2k}+h)^2+w)^i\\ &=\sum\limits_{i=0}^{n}A_i\sum\limits_{j=0}^{i}\binom{i}{j}(b(c^{2k}+h)^2)^jw^{i-j}\\ &=\sum\limits_{j=0}^{n}b^j(c^{2k}+h)^{2j}\sum\limits_{i=j}^{n}\binom{i}{j}A_iw^{i-j}\\ &=\sum\limits_{j=0}^{n}b^j(c^{2k}+h)^{2j}\frac{1}{j!}\sum\limits_{i=j}^{n}i!A_i\frac{w^{i-j}}{(i-j)!}\\ \end{aligned}\]
再次将后面卷积为\(B_j\)
那么:
\[\begin{aligned} ans_k&=\sum\limits_{j=0}^{n}b^j(c^{2k}+h)^{2j}B_j\\ &=\sum\limits_{j=0}^{n}b^jB_j\sum\limits_{i=0}^{2j}\binom{2j}{i}c^{2ik}h^{j-i}\\ &=\sum\limits_{i=0}^{2n}c^{2ik}\sum\limits_{2j>=i}^{2j<=2n}\binom{2j}{i}h^{j-i}b^jB_j\\ &=\sum\limits_{i=0}^{2n}c^{2ik}\frac{1}{i!}\sum\limits_{2j>=i}^{2j<=2n}(2j)!b^jB_j\frac{h^{j-i}}{(j-i)!}\\ \end{aligned}\]
后面的部分卷积大小扩大为\(3n\)因为是一个\(2n\)卷一个\(n\),我们发现只有关于\(j\)下标偶数的时候才可以有值其他的均为\(0\),因为\(2j\)必然为偶数,设卷积得到的为\(C_j\)
\[\begin{aligned} ans_k&=\sum\limits_{i=0}^{2n}c^{2ik}C_j\\ &=\sum\limits_{i=0}^{2n}c^{(i+k)^2-i^2-k^2}C_j\\ &=\frac{1}{c^{k^2}}\sum\limits_{i=0}^{2n}c^{(i+k)^2}\frac{C_j}{c^{j^2}}\\ \end{aligned}\]
仍然可以卷积,由于后面的部分长度为\(3n\),前面的部分长度为\(2n\)所以,卷积的长度为\(5n\)
这样卷积三次就可以得到答案。
然而不能\(AC\)
为什么呢?
特判不够。
注意到我上面进行多项式卷积的时候用\(c\)做了分母。
\(c\)是可能等于\(0\)的。
这样特判一下直接暴力计算就可以了。

猜你喜欢

转载自www.cnblogs.com/Lrefrain/p/12150053.html