zoukankan      html  css  js  c++  java
  • HDU

    题目链接

    题意:n个数,你可以从中选一些数,也可以不选,选出来的元素的异或和大于m时,则称满足情况。问满足情况的方案数为多少。

    分析:本来以为是用什么特殊的数据结构来操作,没想到是dp,还好队友很强。
    定义dp[i][j]为在前i个数里选一些数的异或和为j的方案数,边计算边统计,

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    typedef long long ll;
    const int maxn=(1<<20);
    using namespace std;
    int dp[45][maxn];
    int a[45];
    
    int main()
    {
    //    freopen("da","r",stdin);
        int t;
        scanf("%d",&t);
        for(int kase=1;kase<=t;kase++){
            ll ans=0;
            int n,m;
            memset(dp,0,sizeof(dp));
            scanf("%d%d",&n,&m);
            for(int i=0;i<n;i++) scanf("%d",&a[i]);
            dp[0][0]=1;
            if(m==0) ans++;
            for(int i=1;i<=n;i++){
                for(int j=0;j<maxn;j++){
                    if(dp[i-1][j]==0) continue;
                    dp[i][j]+=dp[i-1][j];
                    int t=j^a[i-1];
                    dp[i][t]+=dp[i-1][j];
                    if(t>=m) ans+=dp[i-1][j];
                }
            }
            printf("Case #%d: %lld
    ",kase,ans);
        }
        return 0;
    }
  • 相关阅读:
    C# using
    Spring框架
    is
    pycharm破解197
    python安装197
    python3.7.0安装197
    centos7 minimal 安装mysql197
    centos7 minimal 安装 &网络配置197
    ruby安装卸载197
    redis安装 卸载 启动 关闭197
  • 原文地址:https://www.cnblogs.com/fht-litost/p/7260194.html
Copyright © 2011-2022 走看看