do_while_true

一言(ヒトコト)

「题解」Codeforces 449D Jzzhu and Numbers

实际上就是个位运算卷积的背包,只需要每个 \(F_i=x^{a_i}+x^{U}\) 位运算卷积卷起来即可(\(U\) 是全集),如果直接暴力把每个 \(F\) 都卷起来是 GG 的,注意到这个做 FMT 也就是后缀和,所有位置不是 \(1\) 就是 \(2\),或者说只有 \(a_i\) 的前缀是 \(2\),其他都是 \(1\)

所以 \(\prod FMT(F_i)\) 的每个位置都是一个 \(2\) 的次幂,而指数就是有多少个 \(a_i\) 的前缀包含它。

那么对 \(a\) 开个桶做一个高维后缀和,每个位置就是 \(\prod FMT(F_i)\) 每个位置的指数,求出 \(\prod FMT(F_i)\)\(IFMT\) 回去。

code

posted @ 2021-09-22 21:24  do_while_true  阅读(23)  评论(0编辑  收藏  举报