NC 13885. Music Problem
链接
https://ac.nowcoder.com/acm/problem/13885
题意
问在 $n$ 个数中是否能找出几个数,让它们的和是 $3600$ 的倍数
思路
我们只要判断是否能找到一些数的和取模后是 $0$ 就可
取模后有 $3600$ 个值,我们用 bitset 存储,第 $x$ 位为 $1$ 表示当前存在一些数的和取模后为 $x$
当我们加入一个数 $a$ 时:$b|=(b<<a)|(b>>(3600-a))$,前者记录当前值加上 $a$ 后不超过 $3600$ 的和,后者记录超过 $3600$ 取模后的和
最后判断 $b[0]$ 是否为 $1$ 即可
代码
1 |
|