Codeforces Round #494 (Div. 3)
ABC咕咕咕
D. Coins and Queries
题意:有 \(n\) 个数 \(a_i=2^k (k\in \{0,1,2\cdots 30\})\),\(q\) 次询问某个数 \(x\) 最少要几个能凑出来。
\(n,q \leq 2\times 10^5\)
题解:
处理出每种 \(a_i\) 的个数。
每次贪心选小于 \(x\) 的最大的。
\(O(n+q\log a_i)\)
E. Tree Constructing
题意:构造一个 \(n\) 个点,每个点度数不超过 \(k\),直径恰好为 \(d\) 的树。
\(n \leq 4\times 10^5\)
题解:
先把直径造出来。
每个点连深度为到直径两端的距离的完全 \(k-2\) 叉树。
点用完了为止。
\(O(n)\)
F. Abbreviation
题意:有一个 \(n\) 个单词的文章,可以把某个 出现过至少两次单词段 替换成它们的首字母 连起来。替换之后不能再替换。问最终最小长度。
(如 a aaa aa a bbbbb aaa aa a a -> a AAA bbbbb AAA a)
\(n\leq 300\),单词总长度 \(\leq 10^5\)
题解:
先把单词两两的相等关系预处理出来。
然后枚举被替换的串。
暴力算答案。(常数非常小,或者可以 kmp/哈希/map)
\(O(n^4+n\sum |s|)\)
浙公网安备 33010602011771号