T2 的做法真多……

没想到啊……我以为正解是子集求和……

因为看 时, ,那么看 时, 。然后就变成了简短的代码

    int n = readint(), m = readint();
    for(int i=1,x; i<=n; ++i){
        x = (1<<MaxN)-1-readint();
        ++ dp[x];
    }
    for(int i=0; i<MaxN; ++i)
    for(int j=0; j<(1<<MaxN); ++j)
        if(j>>i&1)
            dp[j] += dp[j^(1<<i)];
    for(int i=1,x; i<=m; ++i){
        x = (1<<MaxN)-1-readint();
        puts(dp[x] ? "yes" : "no");
    }

然而身旁的队长告诉我,既然是判断 ,只需要直接大傻叉 (或者用 实现同样的功能)就行了……

再然后,身后的法国人,子集枚举过掉了?又有身后的队霸, 左右子树都递归,还是随便切?

建议出题人反省一下,为什么不求有多少个数包含之,为什么数据极其强悍?

全部评论
艹,确实应该求有多少个数包含
1 回复 分享
发布于 2020-10-20 22:23
我就是用Trie的
点赞 回复 分享
发布于 2020-10-20 22:18
2333,开个桶就过了。。。。
点赞 回复 分享
发布于 2020-10-21 07:19
FWT,不香吗
点赞 回复 分享
发布于 2020-10-21 09:42
bitset不香吗
点赞 回复 分享
发布于 2020-10-21 15:40

相关推荐

评论
3
收藏
分享
牛客网
牛客企业服务