[做题记录-乱做] 20212120~20211222

CF1334 E

结论是一定是 \(x -> gcd(x, y) ->y\) 这样子的走法。

所以直接对 \(D\) 所有因子预处理即可。

Loj3093 BJOI2019 光线

设 \(P\) 表示透光率, \(Q\) 表示反射率, 转移即可。

[CQOI2018]破解D-H协议

直接 \(bsgs\) 板子 ?

SDOI2018反回文串

牛逼, 给跪了。

题解link

P2606 [ZJOI2010]排列计数

你们放这样的题目在题单里面显得我很憨。

P4461 [CQOI2018]九连环

直接 python 不和你多BB。

[JXOI2018]游戏

简单题, 考虑那些必须被访问的数即可。

然后根据期望 \(k\) 大值的那个结论直接计算位置的期望即可。

\(\frac{k}{k + 1} \times MAXVALUE\)

P5339 [TJOI2019]唱、跳、rap和篮球

鲲鲲题, 很好。

题意就是有 \(a\) 个喜欢唱的, \(b\) 个喜欢跳的, \(c\) 个喜欢rap的, \(d\) 个喜欢篮球的, 让你选 \(n\) 个排成一排, 使得没有人谈论鸡你太美。

讨论鸡你太美指连续四个人分别喜欢唱跳rap篮球。

\(n \leq 1000, a, b, c, d\leq 500\)

这种东西一看就容斥, 而且和二项式反演脱不了关系。

设 \(f(k)\) 表示至少有 \(k\) 组人讨论鸡你太美, \(g(k)\) 表示恰好有 \(k\) 组人讨论鸡你太美。

\[f(k) = \sum_{i = k} \binom{i}{k}g(i) \\ g(k) = \sum_{i = k} \binom{i}{k}f(i) \\ g(0) = \sum_{k = 0} (-1) ^kf(k) \\ f(k) = \binom{n - 3k}{k} S(a - k, b - k, c - k, d - k, n - 4k) \]

那个 \(\binom{n - 3k}{k}\) 就是把 \(4\) 个人看成一个, 然后选 \(k\) 个展开。

后面的 \(S\) 就是在 \(a - k, b - k, c - k, d - k\) 条件下, 选出来 \(n - 4k\) 个组成序列的方案数。

直接 \(NTT\) 即可。

注意 \(O2\) 并不会优化模数不加 const 的情况。

CF750G New Year and Binary Tree Paths

题解link

P5342 [TJOI2019]甲苯先生的线段树

和上面那个一样。

CZT

P5293 [HNOI2019]白兔之舞

白兔之舞就这啊

单位根反演+MTT卷就完了, 没啥思维难度。

科技难度另说

Luogu4007 小 Y 和恐怖的奴隶主

设 \(f(i, a, b, c, d)\) 表示进行了前 \(i\) 次攻击以后, 当前有 \(a\) 个剩下一滴血的, \(b\) 个剩下两滴的, \(c\) 个剩下一滴的。

那么答案就是 \(\sum_{i = 0}^{n - 1} f(i, a, b, c, d) \times \frac{1}{a + b + c + 1}\) 。

观察到状态数必定不多, 可以设一个 \(g\) 表示当前答案的计数, 和 \(f\) 一起矩乘即可。

[ZJOI2020] 传统艺能

线段树恐惧症好吧。

题意就是给你一个广义的线段树, 然后随便选一个区间打标记, 问最后有标记的点的期望个数。

做法是考虑每个点贡献到答案里面的概率, 现在考虑怎么算这个概率。

一个点被打标记肯定有三个状态, 自己本身有标记, 祖先有标记被推下来,自己和祖先都没有标记。

不妨设当前点为 \(i\), 操作了 \(j\) 次后自己有标记的概率是 \(f_j\), 祖先有标记的概率是 \(g_j\), 自己和祖先都没有标记的概率是 \(h_j\) 。

然后再考虑转移的概率。

考虑求一个 \(a_i\) 表示一次的操作区间完全包含了 \(i\) 的概率, \(b_i\) 表示一次区间操作可以把祖先节点的标记下传到 \(i\) 的概率, \(c_i\) 表示一次操作区间和 \(i\) 不交的概率,\(d_i\)表示递归到 \(i\)并打标记, \(e_i\) 表示递归到儿子归到 \(i\) 的概率。

不妨设 \(S\) 表示 \(n(n + 1)\times 2\), \(L, R\) 表示当前节点的管辖区间。

\[d_i = a_i - a_{fa_i} \\ e_i = 1 - a_i - c_i \]

然后考虑转移,

\[f_j = (1 - e_i) f_{j - 1} + (b_i + d_i) g_{j - 1} + d_ih_{j - 1} \\ g_j = (1 - e_{fa_i})g_{j - 1} + a_{fa_i}h_{j - 1} \\ h_j = e_if_{j - 1}+ e_ig_{j - 1} + (1 - a_i)h_{j - 1} \]

\(f\) 是考虑不能递归到儿子来转移。

\(g\) 是考虑不能把祖先的标记放下来。

\(h\) 考虑放标记, 放祖先标记, 打不到标记。

矩乘即可。

posted @ 2021-12-22 17:46  HN-wrp  阅读(84)  评论(0)    收藏  举报