讲师:PinkRabbit 时间:20210629 地点:福建师范大学附属中学
给出一个随机数生成器(如下)
ull seed = n; int get_rand() { seed ^= seed << 13, seed ^= seed >> 17, seed ^= seed << 5; return seed; }
$T$ 组询问,每组询问给定种子和$n$ ,询问第$n$ 次生成的值
$T≤2×10^5$ ,$n≤10^{18}$ ,$2s$ ,$256MB$
这个过程可以用一个
这时采用经典方法:讲
考虑更大力的优化,我们直接抛弃二进制,使用 256
进制的这个做法,则复杂度将为
$n$ 个城市,第$i$ 个城市有$2k$ 个点权 ($a_{i, 1}$ ,$a_{i, 2}$ , …,$a_{i, k}$ ;$b_{i, 1}$,$b_{i, 2}$ , …,$b_{i, k}$ )从城市
$u$ 直接到$v$ 一共有 $\sum_{i=1}^ka_{u, i} b_{v, i} $ 种方案,$u$ 可以等于$v$ 。
$m$ 组询问,询问城市$u$ 在$d$ 步内到达城市$v$ 的方案数,对$10^9+7$ 取模
$n≤1000$ ,$d<2^{31}$ ,$k≤20$,$m≤50$ 或$k=1$ ,$m=100$ 。1s, 128MB
首先对于每种边建一个虚点(也可以理解为
考虑大力倍增: $$ \sum_{i=0}^{2t-1}C^i=\left(\sum_{i=0}^{t-1}C^i\right)\times\left(I+C^{t}\right) $$
一张
$n=2^m$ 个点的有向完全图。任意两点
$i, j$ 之间的有向边$i\rightarrow j$ 的边权是$w_{(i-j) \bmod n}$ 。求这张图的所有生成内向森林的边权乘积之和。$m≤20$, 模 $998244353。
考虑将每个点均连向一个虚点,这样内向森林个数就是这张图的内向树个数;同时,由于基尔霍夫矩阵的这一阶要去掉,那不妨就不管这个矩阵了,直接想办法求这张图的基尔霍夫矩阵的行列式即可。
注意到,这个矩阵是一个循环矩阵;而循环矩阵的行列式可以表示为:
$$
\prod_{k=0}^nf(\omega_n^k)
$$
其中
设矩阵
$V={v_{i,j}=\omega_n^{ij}}$ ,有: $$ (AV){i,j}=\sum{k=1}^n A_{i,k}\cdot V_{k,j}=\sum_{k=1}^n A_{1,k-i+1}\cdot\omega_n^{kj}=\omega_n^{ij}\cdot f(\omega_n^j) $$ 每一列都同时乘以一个数,则有: $$ det(AV)=det(V)\cdot\prod_{i=1}^nf(\omega_n^i) $$ 所以有:$det(A) = \prod_{i=1}^nf(\omega_n^i)$。
如何求
给定一个
$1$ 到$n$ 的排列$q$ 和一个序列$h$ 。定义一个$1$ 到$n$ 的排列$p$ 的值为 $$ v(p)=\sum_{i=1}^n\sum_{j=i+1}^n{[p_i>p_j]+[p_i+h_i\ge q_j]} $$ 求有多少个$1$ 到$n$ 的排列$p$ 使得$v(p)$ 为偶数。对$998244353$ 取模,$n≤300$。
显然答案为:
$$
\frac {n!+\sum_P(-1)^{v(P)}}2
$$
考虑前面那个艾弗森括号,它的形式很接近行列式中的
给定
$n$ ,$K$ , 满足$K$ 是$2$ 的幂,求 $$ \sum_{i=1}^{+\infty}\begin{pmatrix}n\iK\end{pmatrix} $$ 对$998244353$ 取模。$1≤n≤10^{15}$,$1≤K≤2^{20}$ 。
倍数 类型的问题可以考虑单位根反演:
$$
[d|n]=\frac 1d\sum_{i=0}^{d-1}\omega_d^{in}
$$
于是这题的式子可以写为:
$$
\frac 1K\sum_{i=1}^{+\infty}{\left(\sum_{j=0}^{K-1}\omega_K^{ji}\right)\cdot\begin{pmatrix}n\i\end{pmatrix}}=\frac 1K\sum_{j=0}^{K-1}\sum_{i=1}^{+\infty}\omega_K^{ji}\cdot\begin{pmatrix}n\i\end{pmatrix}=\frac 1K\sum_{j=0}^{K-1}(\omega_K^j+1)^n
$$
搞定。一般来说,单位根相关题目都有一个
在长度为
$n$ 的序列中填入$1, 2, \cdots, k$ , 使得它们出现次数均为$d$ 的倍数。求方案数,模
$19491001$ 。
$d≤3$ ,$k≤5×10^5$ 。当$d=3$ 时$k≤1000$ 。1s, 512MB
显然有:
$$
ans=n!\cdot[x^n]\left(\sum_{i=0}^{+\infty}\frac {x^{id}}{(id)!}\right)^k
$$
当 EGF
通常可以使用单位根来表示。
求
$\sum_{i=0}^n\sum_{j=1}^{a+id}\sum_{l=1}^j l^k$ ,模$1234567891$ 。
$k≤3000$ ,$1<a, n, d<1234567891$ 。1s, 512MB
原式是关于
有
$n$ 张牌,从上到下标号为$1, 2, …, n$ , 标号为$i$ 的牌分数为$i^{type}$ 进行$m$ 轮洗牌,第$i$ 轮拿出顶上$A_i$ 张牌,从而分成两堆。洗牌的过程是,若两堆各有
$X, Y$ 张牌,则分别有$\frac X{X+Y},\frac Y{X+Y}$ 概率拿出这堆的第一张牌作为洗牌后的第一张,然后递归确定余下的部分。求
$m$ 轮洗牌后各位置上的牌的期望分数(进行$Q$ 次询问)
$3≤n≤10^7$ ,$1≤m,Q≤5×10^5$ ,$type∈{1, 2}$ 。
考虑这个发牌方式到底代表了什么?均匀分配!即每一种方案的概率是相等的。我们来证明一下:
设
$X$ 这一组分别是在$p_{1\sim X}$ 处取得,那么显然这个方案的可能性为: $$ \prod_{i=1}^x\left(\prod_{j=p_{i-1}+1}^{p_i-1}\frac{Y+i-j}{N-p_i+1}\right)\cdot\frac{X-i+1}{N-p_i+1} $$ 考虑在最.9后把项数补齐: $$ \left(\prod_{i=1}^x\left(\prod_{j=p_{i-1}+1}^{p_i-1}\frac{Y+i-j}{N-p_i+1}\right)\cdot\frac{X-i+1}{N-p_i+1}\right)\cdot\prod_{j=p_X+1}^N\frac{N-i+1}{N-i+1} $$ 一通变换求和顺序得: $$ \left(\prod_{i=1}^X X-i+1\right)\cdot \left(\prod_{i=1}^N N-i+1\right)\cdot \left(\prod_{i=1}^X\left(\prod_{j=p_{i-1}+1}^{p_i-1}Y+i-j\right)\times\prod_{p_X=1}^N Y+X-i\right) $$ 第一个括号是$X!$ ,第二个括号是$\frac 1{n!}$ ,第三个括号刚好遍历了每一个第二堆中的数的剩余量,因此是$Y!$ 。综上每一种情况的概率都是 $\begin{pmatrix}n\2\end{pmatrix}^{-1}$。
既然是均等的,那么容易写出
如果一列的值是关于其位置的
gugugu
平面直角坐标系上有一个醉汉位于原点。
每一步,他分别有
$p_1$ ,$p_2$,$p_3$,$p_4$ 概率向西、南、东、北方向走一个单位长度。移动
$n$ 步,求经过的点数期望值(经过多次只算一次),保留三位小数。$n≤50$, 2s, 256MB
关于第一次经过,有一个非常神仙的做法。设
设
$n$ 个整数$h_1,h_2,…, h_n$ ,$h_i$ 在一个区间$[A_i, B_i]$ 中选取。比较两个元素的大小,如果大小相同,认为较前的更小。从每个位置出发分别进行向左、向右两次试验。一次试验是往该方向找到最长的一段位置,使得它们的值都小于出发位置
求有多少种方案使得,每个位置的两次试验得到长度差不超过
$2$ 。答案模
$10^9+7$ ,$n≤300$,$A_i≤B_i≤10^9$ 。3s, 512MB
试验的长度差不超过二,意味着如果建出笛卡尔树,那么每个点必然在其区间的中间三个位置之一!因此我们向下递归计算,这本身的复杂度不是很大。
考虑计算过程中维护一个数组
注意,这里的维护嘛,其实可以直接维护一些点值,然后一段中有效点值的个数即将少于其次数时,我再插值插一个出来备用即可,复杂度不大。
设有一随机数生成器能生成
$0$ 到$k$ 的整数,其中生成$i$ 的概率为$p_i$ ,$p_0≠0$ 。用该生成器独立生成
$n$ 个随机变量,设它们的和为$s$ 。求
$s$ 取得$0, 1, \cdots, m$ 的概率各为多少。模
$10^9+7$ ,$1≤n<10^9+7$,$1≤km≤10^7$ ,1s, 256MB。
换句话说,题目是求:
$$
[x^{1\sim m}]\left(\sum_{i=0}^k p_ix^i\right)^n
$$
我们拓展为更一般的形式:
$$
[x^{1\sim m}]\left(F(x)\right)^n
$$
设
给定一张
$n$ 个点的有向图,给定两点$s, t$ 。杏仁子图:$s→t$ 间(除两端外)点不交的若干条链组成的子图
$q$ 次询问,每次强制$s$ 点与$u$ 点相连,求有多少个杏仁子图
$n≤22$ , 2s, 1GB
实际上询问只有
设
把所有的
我们把集合幂级数当作一个
我们发现,子集卷积等价于占位多项式的普通卷积(其中系数按照
进而,$\exp$ 也可以用这种占位多项式的普通卷积来定义;而普通卷积可以通过
处理出了 FWT
,处理出子集前缀和;对于每个 FWT
的结果)。复杂度
总复杂度