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

题意

\[T_{1,1}=k, T_{i,j} = \begin{cases} T_{i-1,j-1} \oplus T_{i-1,j}, &\textrm{if } 1 < j < i \\ T_{i-1,j}, &\textrm{if } j = 1 \\ T_{i-1,j-1}, &\textrm{if } j = i \end{cases} \]

给定 \(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\),此时:

\[f(n,k)=k\times (n-k\times \lfloor\frac{n}{k}\rfloor)+\lfloor\frac{n}{k}\rfloor \]

化简得 :

\[f(n,k)=kn-k^2 \lfloor\frac{n}{k}\rfloor+\lfloor\frac{n}{k}\rfloor \]

\(\lfloor\frac{n}{k}\rfloor\) 整除分块,是零次方,一次方和二次方和,单组测试复杂度 \(O(\sqrt{n})\)

posted @ 2025-02-26 16:18  蒻蒻虫  阅读(163)  评论(0)    收藏  举报