竞赛讨论区 > T2 的做法真多……
头像
hf_OneInDark
发布于 2020-10-20 22:16
+ 关注

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");
    }

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

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

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

全部评论

(5) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐