专栏文章
计数乱刷
个人记录参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @miqjo96r
- 此快照首次捕获于
- 2025/12/04 05:54 3 个月前
- 此快照最后确认于
- 2025/12/04 05:54 3 个月前
哎,我的计数真的是一坨翔。
P11173(思考:?,代码:?)
考虑把矩阵看成一个有向图,则求 次幂后为 矩阵当且仅当有向图不存在长度为 的路径,所以说这就是对 DAG 的最长路求和。
那么直接开始分层做 DP。设 表示算了 个点,最后一层有 个点,方案数还是最长路总和。枚举这一层填了 个,那么有
复杂度 。
AGC039F(思考:?,代码:?)
设 表示第 行最小值, 表示第 列最小值,则显然有 。
按值从大到小扫,设目前已经填了 行 列,加入一个值 时有 行 列满足 ,则首先有贡献 。
然后算方案数,发现除了 还有 的限制,考虑容斥。指定有 行 列满足 ,则容斥系数为 ,方案数就是 。直接做可以得到 的优秀复杂度。
考虑优化。发现两维其实是独立的,那么交替转移(如 )即可做到 。
P10143(思考:?,代码:?)
考虑每个题目可见或不可见时的限制。
- 若第 个题目可见,则在它前面的只有 中可见的题目,后面的任意。做个背包乘上 即可。
- 若第 个题目不可见,则在它前面的是所有 中可见的题目,以及 中可见的题目。前面的任意,做个背包乘上 即可。
ARC087F(思考:?,代码:?)
最大等价于每个 都经过了重心。
以重心 为根,则限制相当于 无限制,所有儿子子树内的点都不能连向这棵子树中的点。直接做没性质,考虑容斥有 个点连向本身,转化为统计有多少种方案满足有恰好 个点连向本身。设子树大小为 ,则系数为 ,做一个背包即可 。
AT_nomura2020_f(思考:?,代码:?)
考虑不合法的条件。如果在第 位上存在 (),且 中的第 位存在不相等的位,那么这就是不合法的。
同时可以发现这也是充分的。现在考虑 DP,设 表示填了 位,序列长度为 的方案数。考虑转移:
- 不存在逆序对。则序列即为 的形式,这一共有 种,。
- 存在逆序对。则序列为 的形式。设 的距离为 ,考虑将中间的问号缩成一段,转移即为 。
前缀和优化即可做到 。
ABC213G(思考:5min,代码:?)
,考虑直接状压。设 表示 所在连通块恰好为 的方案数(不考虑 以外的连边情况),再设 表示 的导出子图的边数。由于【连通】不好刻画,经典地使用容斥。枚举在 连通块内的是哪些点,有转移
最后统计答案时考虑 以外的贡献(即 )即可,复杂度 。
可以使用集合幂级数的半在线卷积优化到 。
ABC134F(思考:10min,代码:?)
鉴定为灵感题,想到转化就是水题了。
考虑将排列视为二分图的一个完美匹配,其中 连向 的边权值位 。考虑 DP:设 表示当前考虑了 的所有点,左右分别有 个点没有匹配,当前权值为 ,转移显然。复杂度 。
ARC190D(思考:INF,代码:?)
观察到重要结论:。证明:
设 为 的一个原根,则 恰好取遍 。所以原式即为 ,运用等比数列求和公式分讨一下即可。
将每一个为 的位置看作一个未知数并暴力把他们做 次幂,有贡献的项必然满足所有未知数的指数 。剩下的 work 就轻松很多了。将其转化到图上考虑,那么一项就对应图上的一条路径。对 有贡献的路径有且仅有如下几种:
- ,此时所有路径均合法。
- ,且路径形如 ,此时 项次数为 。
- 路径形如 ,此时 项次数为 。
- 路径形如 ,此时 项次数为 。
将原 快速幂,再分讨一下即可算 的贡献即可。注意要乘上其他 任意选的方案数。
这个结论应该可以做一些比较神秘的反演题,不过局限性可能比较强。
AGC043D(思考:15min,代码:?)
注意到这个形式类似对 个长度为 的排列做归并,考虑分析每个排列的形式。
不难发现若一个排列 中,若 ,那么 必然紧跟在 后面被选中。于是若结果序列 中 就将 向 连一条边,如果存在连通块的大小 则这个 是不合法的,若大小为 或 的连通块个数 也是不合法的。除此之外都是合法的,构造只需要贪心匹配即可。
现在开始 dp。设 表示填到了 的第 个位置,大小为 或 的连通块个数为 的答案。转移枚举当前的连通块,乘上对应的二项式系数即可,复杂度 。
ABC386G(思考:INF,代码:?)
计数差分序列。
考虑这样一个事情:
其中 表示 的 MST 权值和, 表示 的连通块数, 表示只保留 中权值 的边后形成的图, 是因为求和中每一个都要 , 是因为每条边都少算了一次。证明考虑换一个角度贡献即可。
有了这个做计数就轻松很多了。将求和与常数分开考虑,常数部分显然是简单的,现在考虑求和部分。
枚举保留的权值为 ,那么相当于对所有图的连通分量个数计数,其中一条边有 的方案连上,有 的方案不连。枚举连通块的大小,则所有 对总答案的贡献即为
其中 表示形成大小为 的连通图的方案数。
这就是经典问题了,将总方案减去不合法方案,枚举 号点所在连通块大小容斥即可。转移为
复杂度 。也可以使用 与 的组合意义得到 或更低的做法。
AGC070B(思考:INF,代码:?)
深刻计数题,知道了最关键的 Hint 仍然没头绪的那种。话说这场全是神人题吧。
设 分别表示偶环数与奇环数,考虑怎么算 的权值。一种思想是将 的权值拆成 ,然后转化成【指定 个结构,每个结构权值为 】的问题。那我们可以转化成【指定 个奇环,每个奇环权值为 】的问题。
然后你发现它直接指定不了啊,那我们考虑继续容斥。将条件改成【指定 个环,其中有 个偶环】,那么【有 个偶环】的条件就等价于 ,故技重施,我们给偶环赋上 的权值,这样就可以比较好地表示出原问题的答案。
现在的限制就是【指定 个环,每个环的权值为 】,以及【环中不能出现任意一个 】。最后一个限制比较神秘,我们考虑忽略它怎么搞。设 表示指定的环包含的点的集合,那么 以外的贡献就是 (若 )或 (若 ),我们考虑 内部的贡献。显然只跟 有关,设其 EGF 为 ,并将单个置换环的系数的 EGF 设为 。那么有:
F(z)=\exp G(z)$$
然后你惊奇地发现 $G(z)=\ln (1+z)$,所以说 $F(z)=1+z$,$S$ 有贡献当且仅当 $[|S|\le 1]$!!!
现在我们再来考虑加上 $i\to p_i$ 限制的情况。对这个再做一次容斥,指定有哪些边被选入环中并带上 $(-1)^{|S|}$ 的贡献。不难发现这些边一定形成了若干条祖孙链,我们将这些链缩成点考虑,这就直接转化成了上述情况!!!换句话说,只有 $S$ 恰好为 $\le 1$ 个祖孙链的形式才会对答案有贡献。这已经是相当容易的一个问题了,分讨 $|S|=0/1$:
- $|S|=0$。此时的贡献为 $n(n-1)^{n-1}$。
- $|S|=1$。算一下点数为 $k$,不包含 / 包含 $1$ 的祖孙链分别有 $s_{k,0/1}$ 条,那么贡献就是 $(\sum_{k}s_{k,0}(n-1)^{n-k})+(\sum_ks_{k,1}n(n-1)^{n-k-1})$。注意这里容斥奇偶环的系数与容斥 $i\to p_i$ 的系数抵消了。
做完了,复杂度 $O(n)$。总结一下:
- 定义总权值为所有结构的权值之积,若出现【恰好有 $k$ 个结构,每个结构权值为 $C$】这样的限制,那么可以通过 $C^k=\sum_{i=0}^k{k\choose i}(C-1)^i$ 转化成【指定有 $k$ 个结构,每个结构的权值为 $(C-1)$】 的问题。如果是【这样的结构恰好有 $0$ 个】这样的限制,可以将其视为 $C=0$ 的情况。
- 看啥不顺眼就容斥啥,不要被容斥的层层嵌套吓住。
- 如果实在没头绪可以尝试表一下容斥系数。
### P11746(思考:10min,代码:?)
套路题。
首先若 $2|(n+m)$ 显然无解,否则考虑计数完全相同的行/列有偶数个的情况。
此时奇数的权值为 $0$,偶数的权值为 $1$,根据经典技巧,算出【奇 $1$ 偶 $1$】与【奇 $-1$ 偶 $1$】的答案,相加后除以 $2$ 即可。
【奇 $1$ 偶 $1$】是好算的,即为总方案数 $2^{nm}$。考虑【奇 $-1$ 偶 $1$】,实际上就是将每一个完全相同的行的权值设为 $-1$,再对每一种方案的权值之积求和。根据上一题的经典结论,将【一种恰好有 $k$ 个合法结构的方案,权值为 $C^k$】转化为【指定 $k$ 个结构合法,权值为 $(C-1)^k$】。代入 $C=-1$,我们得到每一个相同的行/列权值为 $-2$。枚举有 $i$ 行 $j$ 列合法,开始计数。
- 若 $i=0\land j=0$:则贡献为 $2^{nm}$。
- 若 $i=0\land j>0$:则贡献为 ${m\choose j}(-2)^j\times 2^j\times 2^{n(m-j)}$。
- 若 $i>0\land j=0$:则贡献为 ${n\choose i}(-2)^i\times 2^i\times 2^{m(n-i)}$。
- 若 $i>0\land j>0$:则贡献为 ${n\choose i}{m\choose j}(-2)^{i+j}\times 2\times 2^{(n-i)(m-j)}$。
枚举 $i,j$ 并求和即可做到 $O(n^2)$。
考虑优化。瓶颈在于 $i>0\land j>0$ 的部分,推一下这边的式子:
$$\begin{aligned}
&\sum_{i=1}^n\sum_{j=1}^m{n\choose i}{m\choose j}(-2)^{i+j}\times 2\times 2^{(n-i)(m-j)}\\
=&~2\sum_{i=1}^n{n\choose i}(-2)^i\sum_{j=1}^m{m\choose j}(-2)^{j}\times 2^{(n-i)(m-j)}\\
=&~2\sum_{i=1}^n{n\choose i}(-2)^i\Big((2^{n-i}-2)^m-2^{m(n-i)}\Big)
\end{aligned}$$
可以使用光速幂的技巧做到 $O(n)$。
### ABC389G(思考:5min,代码:?)
米共,懒得喷。
直接分层 dp:设 $f_{i,j,k,u,0/1}$ 表示目前已经选出了 $i$ 个点、$j$ 条边,偶减奇为 $k$,最后一层有 $u$ 个点的方案数。有转移:
$$f_{i+v,j+w,k+v(-1)^{1-t},v,1-t}\gets f_{i,j,k,u,t}\times {i+v-1\choose v}\times {\rm coef}_{u,v,w}$$
其中 ${\rm coef}_{u,v,w}$ 表示最后一层有 $u$ 个点,新加 $v$ 个点、$w$ 条边,且新加的点每一个都与最后一层有连边的方案数。枚举没有连边的点并容斥,那么有
$${\rm coef}_{u,v,w}=\sum_{i=0}^u{u\choose i}(-1)^i{u(v-i)+\frac{v(v-1)}{2}\choose w}$$
最终的复杂度是 $O(n^8)$。记得刷表转移,并且如果当前状态没有值就 `continue` 掉。
### P11893(思考:0s,代码:?)
神如金出题人,能把这种又唐又恶心的题放到 T4 这辈子有了。
我们直接可以得到答案的表达式
$$\Big(n^2({\rm e}^z-1)\Big)-\Big((n-1)![z^{n-1}]z{\rm e}^z(z{\rm e}^z-{\rm e^z}+1)({\rm e}^z-1)\Big)$$
将上述式子展开成关于 $z$ 与 ${\rm e}^z$ 的多项式后可以直接得到通项,并且阶乘会被约成 $\le 2$ 次的下降幂。于是直接维护 $n\bmod (10^9+7)$ 与 $n\bmod (10^9+6)$ 算即可。
### P11897(思考:5min,代码:?)
最开始看成可以选择一个维度并且选择一个点置成 $0$,调了大半天样例/xk
若两个点分别是 $a,b$,那么显然 $\bf B$ 赢的充要是 $2|{\rm popc}(a\cup b)$。单位根反演(?)一下可以得到 $[2|{\rm popc}(a\cup b)]=\frac 12\Big(1+(-1)^{{\rm popc}(a\cup b)}\Big)$,后面的部分就是一个类似 FWT 的东西,直接做可以做到 $O(qn2^k)$,然后类似线段树地每层排除掉无交或者被包含的区间即可做到 $O(q2^k)$。
### AT_hhkb2020_f(思考:?,代码:?)
设 $F(x)={\rm Pr}[\max(X_i)\le x],P(x)={\rm Pr}[\max(X_i)=x]$,那么简单的推导有
$$P(x)=F'(x)$$
原问题的答案即为
$$\int_0^{+\infty}xP(x){\rm d}x=\int_0^{+\infty}xF'(x){\rm d}x$$
然后考虑 $F(x)$ 是什么。显然 $F(x)$ 可以表示为
$$F(x)=\prod_{i=1}^nf_i(x)$$
其中
$$f_i(x)=\begin{cases}0&\text{if }x<l_i\\\dfrac{x-l_i}{r_i-l_i}&\text{if }l_i\le x<r_i\\1&{\rm otherwise}\end{cases}$$
将 $l,r$ 离散化后可以将 $F(x)$ 表示为 $O(n)$ 段的分段函数,对于每一段分别做积分即可。扫描线维护 $F(x)$ 即可做到 $O(n^2)$。相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...