====== 2020/05/10 北方大学ACM多校训练赛 第五场 ====== ===== 比赛信息 ===== 日期: 2020/05/10 (原日期: 2017/04/02)\\ 链接: [[https://www.jisuanke.com/contest/704/challenges]]\\ 做题统计:王瑞琦: 冯宇扬: 常程:\\ (BOMB) ===== 题解 ===== (这场比赛和上一场一样,题解难找,一些题只能说一下我们的思路) ==== A cstdlib and grid==== solved by, upsolved by .\\ 题意:对于$N\times M(max(N,M)\ge2)$的网格,最少使用多少$K\times K$的覆盖,使该网格依然存在从左上角走到右下角的方案,且所有方案的步数都大于$N+M-2$?\\ 题解: ==== B Convolution ==== solved by, upsolved by .\\ 题意:{{:2020-2021:teams:no_morning_training:34018698c2ccfa7803d259465fbdebff9a652ed7.png?400|}}\\ 题解:没有找到题解,自己也不是很会_(:зゝ∠)_ ==== C Cube Or ==== solved by None, upsolved by 发源于.\\ 题意:n个数,q次查询。定义一种操作是在n个数中选取3个数进行或。每次查询给出一个数,计算得到这个结果的不同操作数。\\ $n \le 3 \times 10^5$, $q \le 3 \times 10^5$ \\ 题解:容斥。\\ 设n个数的数组为 ''a'' 、、 定义 $f[i]=size({j | \forall k (2^k \& j \to 2^k \& i) })$ \\ 或者说 ''f[i]'' 为所有**i 第 k 位为0时 j 的对应位也为0**的 j 的数量 \\ 所以,很显然就有转移式 $f[i] = f[i]+ f[i \oplus (2^k)]\times bool(i\&(2^k)) (0\le k \le \log_2 \max (a)$) \\ 初始状态, $f[a[i]]=1 \; (1\le i \le n)$ \\ 然后 方案数 $tot[i]=f[i]^3$ \\ 最后,对''tot[i]''容斥 \\ 对于每位 ''k'', 我们构造掩码 $mask[k]=2^{k+1}-1$ \\ $ans[i]=tot[i]-tot[mask[k] \& i]\times bool(i \& 2^k) \; (1\le 2^k