摘要: 容斥+分治NTT. 令 $dp[i]$ 表示以 $i$ 结尾的方案数. 如果只有小于号的话 $dp[i]$ 是非常好求的:$\frac{n!}{\prod a_{i}}$ 即总阶乘除以每一个小于号连续段. 有大于号的时候考虑容斥: 遇到第一个大于号的时候先不考虑当前位置关系,方案数就是 $dp[j] 阅读全文
posted @ 2020-07-21 17:43 EM-LGH 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 显然,不合法的情况要存在序列被分成值域为 $[1,i]$ 与 $[i+1,r]$ 两部分. 不妨采用容斥的方法来减去所有不合法的情况. 令 $f[i]$ 表示 $1$ ~ $i$ 构成的合法序列数目. 那么不合法的情况一定可以表示为 $f[j] \times (i-j)!$ 即前 $j$ 个数组成的 阅读全文
posted @ 2020-07-21 16:19 EM-LGH 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 比较神仙的推导. 求 $\sum_{n=0}^{ \infty }s(n)r^n$,其中 $s(x)$ 是一个 $m$ 次多项式,$0\leqslant r \leqslant 1$ 显然可以 $s(x)$ 每一个系数的贡献,那么就转化为: $\sum_{j=0}^{m} a_{j} \sum_{n 阅读全文
posted @ 2020-07-21 15:27 EM-LGH 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 普通平衡树 需要注意的点:1.哨兵节点提前插入 2.父亲节点注意一下 3.细心一点 #include <bits/stdc++.h> #define N 300009 #define lson s[x].ch[0] #define rson s[x].ch[1] #define setIO(s) f 阅读全文
posted @ 2020-07-21 14:48 EM-LGH 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 令 $f(i,j)$ 表示 $j$ 的 $i$ 阶前缀和. 那么有 $f(i,j)=\sum_{j=1}^{i} f(i-1,j)$,这个可以直接多项式快速幂. 时间复杂度是 $O(n \log^2 n)$ 或 $O(n \log n)$ ,但是常数大而且第二种不好写. 考虑计算每一个位置 $j \ 阅读全文
posted @ 2020-07-21 11:28 EM-LGH 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 复习一下单位根反演: $[k|n]=\frac{1}{k} \sum_{i=0}^{k-1} w_{k}^{ni}$,即 $[n \% k=0]$ 最前面那个 $\frac{1}{k}$ 不要忘记,也不要写错!!! 当 $n$ 很大,$k$ 不大的时候可以预处理出来 $w_{k}^{i}$ 然后后面 阅读全文
posted @ 2020-07-21 08:36 EM-LGH 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 考场上忘了第二类斯特林数公式,过于智障,这里再重新推一遍. 首先,$S(i,j)$ 表示的意义是将 $i$ 个不同的球放入 $j$ 个相同的盒子中的方案数,且盒子不能为空. 那么有 $S(i,j)=S(i-1,j-1)+S(i-1,j) \times j$ 分别表示新开一个盒子/放入之前的盒子. 然 阅读全文
posted @ 2020-07-21 07:41 EM-LGH 阅读(162) 评论(0) 推荐(0) 编辑