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 位置是 聪聪下一步会去哪里就好了
搜索的时候记忆化一下

posted @ 2020-10-16 15:40  HISKrrr  阅读(86)  评论(1编辑  收藏  举报