Codeforces Round 1006 (Div. 3) 部分题解
题面好长。
这场还在 testing,就不放代码了。
E - Multi-Target Attacks
题意
给定 \(k \leq 10^5\) ,构造 \(n \leq 500\) 个点使得恰好有 \(k\) 对点的欧式距离等于曼哈顿距离。
题解
一条线上的点满足这个条件,一条线上有 \(m\) 个点就有 \(\frac{m\times (m+1)}{2}\) 个选择,选择若干个 \(m\) 凑够 \(k\) ,铺成一个个横条就行(\(x\) 不同 \(y\) 相同)。
从大到小选,最大的 \(k\) 大致需要 \(n=460\) 左右,可以接受。
不知道最小 \(n\) 怎么求(好奇)。
F. Goodbye, Banker Life
题意
给定 \(k\),求出第 \(n\) 行的所有元素值。
题解
改成记录被加次数,奇数为 \(k\),偶数为 \(0\),发现这就是杨辉三角,\((i,j)\) 上的被加次数是 \(\binom{i-1}{j-1}\)。
当 \(n \And m=m\) 时,\(\binom{n}{m}\) 是奇数,直接判断即可。
G - Calculated the Sum
题意
设 \(f(n,p)\) 为将 \(n\) 的 \(p\) 进制表示翻转后再转为 \(10\) 进制后的数字,给定 \(n,k\) ,求 \(\sum_{i=2}^k f(n,i)\)。
\(n \leq 3 \times 10^5\),多组测试对 \(n\) 没有限制。
题解
若 \(k>n\) 则 \(f(n,k)=n\),现在考虑 \(k \leq n\) 的情况。
若 \(k^2\leq n\),那么暴力求解 \(f(n,k)\),单次求解复杂度为 \(\log_kn\)。这样的 \(k\) 最多 \(\sqrt{n}\) 个。
多 \(k^2 > n\),那 \(n\) 的 \(k\) 进制表示最多为 \(2\) 位,最低位是 \(n\mod k=n-k\times \lfloor\frac{n}{k}\rfloor\),最高位是 \(\lfloor\frac{n}{k}\rfloor\),此时:
化简得 :
\(\lfloor\frac{n}{k}\rfloor\) 整除分块,是零次方,一次方和二次方和,单组测试复杂度 \(O(\sqrt{n})\) 。

浙公网安备 33010602011771号