为集训的结束画一个圆满的0分

0.闲扯

早上去退房结果迟到了………………
结果又颓废了五小时。

1.题解

A

对于这种奇怪的问题肯定是先枚举可行的 \(k\) 再计算 \(\gcd=k\) 的集合的 \(k^{|S|}\) 之和。
然后 dp 爆算。

B

dp,设 \(f_{i,j}\) 表示下一个到 \(i\) 偏移 \(j\) 时期望能走多远,那么显然有 \(f_{i,j}=1+p_if_{i+1,j}+\dfrac{1-p_i}2f_{i,j+1}+\dfrac{1-p_i}2f_{i+1,j+1}\)
然后上矩阵。

ARC101F

可以转化成一堆点,每个点的两维坐标是到两边的距离,现在相当于要移动坐标轴,问所有点先碰到的轴有多少种方案。
注意到一个点左上方的点被 \(x\) 轴染色时这个点一定也被 \(x\) 轴染色,那么我们发现一个方案对应了一条左下到右上的折线,dp。

2.杂题选讲

CF830D

这个题一看就很 dp,可能很容易想到一个设 \(f_n\) 表示 \(n\) 层时的答案,但是写出来它的转移就会发现仅凭这一个状态是不够的,我们可能会遇到在一个子树内选择若干条不交路径的情况,所以干脆直接记到状态里。
\(f_{n,k}\) 表示深度 \(n\) 的树中选 \(k\) 条不交路径的方案数,发现这个玩意其实挺好转移的,然后就做完了。

CF850D

由于题目中给出了一个神秘的公式,所以我们考虑怎么利用它。
然后我们就得到点数不会超过 \(61\)
然后我们就可以 dp。

CF878E

容易发现最终答案中的每个数会乘上一个二的幂作为系数,我们想让正数的系数尽量大而负数的尽量小,这样数列会被分成若干段,每一段从右边开始合并,再从左边开始。
我们把询问离线,从左往右枚举右端点,现在需要考虑加入一个新点时分的段会发生什么变化。
如果该点小于零,那么直接自成一段;否则我们先合到最后一段,再依次往前看能不能合,这个可以并查集维护。

posted @ 2021-06-09 19:21  ajthreac  阅读(143)  评论(0编辑  收藏  举报