A. Number
假设(n_i)为十进制数(n)的第(i)位上的数字,那么(max_{i}n_i)即为答案。
B. Mod
用BFS的方法计算可以以(O(p))的复杂度出(x)到(i(0 le i < p))的最少步数, 记该步数位(cost(x, i))。
分别对(n)和(m)执行上述步骤,然后枚举(i(0 le p < p)),(cost(n, i)+cost(m,i))的最小值即为答案。
C. Game
(n=1)时特判。
(n)为奇数时,最后一步由后手方操作。所以,不论最后一步剩余的两个数字是什么,后手方都能造出一个偶数,所以(n)为奇数时后手必胜。
后续仅需讨论(n)为偶数的情况。(n)为偶数时最后一步由先手方操作。
如果初始数列至少有两个偶数,那么每次后手方操作完数列至少保留2个偶数。因为先手方最优的操作就是删去1个0,而后手方总能耗费任意两个数造出一个偶数。所以最后一步时数列由两个偶数组成,此时后手必胜。
反之,在后手操作完之后先手总能将新造的0删去,所以数列中不会有超过初始值的偶数,所以先手方操作最后一步的时候至多有1个0。此时先手必胜。
D. String
- I: trie插入
- D: trie删除
- Q: trie查询
- U: 每次暴力将两颗子树合并。
看了评论区,终于搞懂了为什么这样整能过。nb网友这么多的么。