CSP 模拟17
A:简单的区间
如题 简单
但是我考试的时候脑瘫不会
cdq直接搞就完了
每次处理跨过中点的贡献
记录左区间和 右区间和
Mx在左边右边分别讨论
开一个桶来记录某个值出现过多少次
模k可以通过推式子消除 假设此时左指针到i 右指针到j
(sum[i] + sum[j] - Mx) % k = 0
sum[j] % k = (Mx - sum[i]) % k
所以桶里放sum[j]模k之后的值 然后每次查询(Mx - sum[i]) % k 一共出现过几次
然后就可以直接在桶里找答案了
B:简单的玄学
首先答案肯定是 \(\cfrac{A^{m}_{2^n}}{2^{nm}}\)
不会的建议重学排列组合
然后考虑怎么约分
首先肯定只可以约掉2
所以就是求\(A^{m}_{2^n}\)
而\(A^{m}_{2^{n-1}}\)
这个东西中2的因子个数 和(m-1)!是一样多的
证明:也就是证\(2^n\) - \(a\) 中的2因子与 a中的一样多
设a = \(2^k\) * x
则原式可以化为\(2^k\) * (\(2^{n-k}\) - x)
而后面的柿子一定不含2的因子
所以含有就是\(2^k\) 即a中含有的2的因子数
而k!中含有2的因子数是个挺经典的问题(我怎么不知道)
证明很简单 随便一手模就理解了
约分之后直接取模就能做了
C:简单的填数
一些性质是很显然的
所以大模拟就好了
贪心
D:聪聪和可可
本来以为是个期望dp
记忆化优化暴力
预处理出来 聪聪在x 可可在y 位置是 聪聪下一步会去哪里就好了
搜索的时候记忆化一下
如初见 与初见