int lim = (1 << 24); for (int i = 0; i < 24; i++) for (int j = 0; j < lim; j++) if ((1 << i) & j) mx[j] = max(mx[j], mx[j ^ (1 << i)]);
每个\(mx[mark]\)包含了其二进制子集的信息