求问

学术版

再帮忙看一道题: 给定 $n$ 个元素的序列 $a$,以及一个整数 $m$。 请从给定的数字中挑选**任意个**数字,使得它们的和 $\bmod m$ 的余数尽量大,输出这个最大的余数。
by HuYao @ 2024-04-06 18:52:55


第二题 $1\le n\le 40$,$1\le m\le 10^9$,$1\le a_i\le 10^8$。
by HuYao @ 2024-04-06 18:54:20


第一个问题,由于删后的位数是确定的,则比较大小是由高位向低位比的。考虑贪心。找到n最高的k+1位,它们有可能是最大值。找第一次出现的最大值,其前面全部删掉。k减去前面的位数。这样递归处理,复杂度是 $O(10k)$ 的。 第二个问题,折半搜索吧,分前面和后面20位,将其后面可能的和取模的答案存入数组中,枚举前面的和取模,设当前的答案是x,找最大的$<m-x$ 的数,显然二分可以解决
by Maleatas @ 2024-04-06 19:11:26


@[HuYao](/user/1145208)
by Maleatas @ 2024-04-06 19:11:40


第二个问题复杂度 $O(2^\frac{n}{2}\log 2^{\frac{n}{2}})\approx O(n\times 2^{\frac{n}{2}-1})$ 完全可以通过
by Maleatas @ 2024-04-06 19:18:41


|