T2

包含

https://ac.nowcoder.com/acm/contest/7607/B

T2
正解不清楚,因此打了记忆化搜索
由于对于任意整数a,b必有c = (a & b) ≤ min(a , b),因此对于每一个a[i]搜索自己再记录桶,时间复杂度O(N)(最大也就1e6)

code:

#include<iostream>
#include<cstdio>
#include<bitset>
using namespace std;
const int N = 2000010 , K = 24;
int n , m;
int a[N] , s[N];
inline int read()
{
    int res = 0 ; char c = getchar();
    while(c < '0' || c > '9') c = getchar();
    while(c >= '0' && c <= '9')
    {
        res = res * 10 + c - '0';
        c = getchar();
    }
    return res;
}
void dfs(int x)
{
    if(s[x]) return;
    for(int i = 0 ; (1 << i) <= x ; i++)
        if(x & (1 << i)) dfs(x ^ (1 << i));
    s[x] = 1;
}
int main()
{
    n = read() ; m = read();
    for(int i = 1 ; i <= n ; i++)
    {
        a[i] = read();
        dfs(a[i]);
    }
    for(int i = 1 , X ; i <= m ; i++)
    {
        X = read();
        if(s[X]) printf("yes\n");
        else printf("no\n");
    }
    return 0;
}
全部评论

相关推荐

10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务