也许更好的阅读体验

\(\mathcal{Description}\)

给定\(n\)和长度为\(n\)的数组\(a\)

问从\(a\)中选取任意个数使得其 异或起来的值 等于 或起来的值 的方案数

\(n\leq 50,a_i\leq 2^{13}\)

\(\mathcal{Solution}\)

考虑枚举最终答案是什么,即最后或起来的值是什么

这样是\(2^{13}\)的复杂度

之后把这个值的子集求出来,这是\(2^s\)的复杂度

把合法的\(a\)提出来

设\(f_{i,j}\)表示前\(i\)个数异或起来为\(j\)的方案数,直接做背包\(DP\)即可

设枚举到的答案是\(s\),\(DP\)的复杂度为\(n*2^s\)

总复杂度为\(\sum\limits_{i=1}^{13}\begin{pmatrix}n\\i\end{pmatrix}2^i*n=n\sum\limits_{i=1}^{13}\begin{pmatrix}n\\i\end{pmatrix}2^i*1^{n-i}=n\left(2+1\right)^{13}=3^{13}n\)

\(\mathcal{Code}\)

/*******************************
Author:Morning_Glory
LANG:C++
Created Time:2019年10月28日 星期一 14时27分41秒
*******************************/
#include <cstdio>
#include <fstream>
#define ll long long
using namespace std;
const int maxn = 55;
const int maxm = 16485;
//{{{cin
struct IO{
template<typename T>
IO & operator>>(T&res){
res=0;
bool flag=false;
char ch;
while((ch=getchar())>'9'||ch<'0') flag|=ch=='-';
while(ch>='0'&&ch<='9') res=(res<<1)+(res<<3)+(ch^'0'),ch=getchar();
if (flag) res=~res+1;
return *this;
}
}cin;
//}}}
int n,S,cnt,tot;
int a[maxn],s[maxm],v[maxn];
ll ans;
ll f[maxn][maxm];
int main()
{
cin>>n;
for (int i=1;i<=n;++i) cin>>a[i];
S=(1<<14)-1; for (int i=1;i<=S;++i){
cnt=tot=0;
for (int j=i;j;j=(j-1)&i) s[++cnt]=j;
s[++cnt]=0; for (int j=1;j<=n;++j)
if ((a[j]|i)==i) v[++tot]=a[j]; f[0][0]=1;
for (int j=1;j<=tot;++j)
for (int k=1;k<=cnt;++k) f[j][s[k]]=f[j-1][s[k]^v[j]]+f[j-1][s[k]]; ans+=f[tot][i];
} printf("%lld\n",ans);
return 0;
}

如有哪里讲得不是很明白或是有错误,欢迎指正

如您喜欢的话不妨点个赞收藏一下吧

或与异或 [背包DP]的更多相关文章

  1. 树形DP和状压DP和背包DP

    树形DP和状压DP和背包DP 树形\(DP\)和状压\(DP\)虽然在\(NOIp\)中考的不多,但是仍然是一个比较常用的算法,因此学好这两个\(DP\)也是很重要的.而背包\(DP\)虽然以前考的次 ...

  2. 【bzoj3687】简单题 背包dp+STL-bitset

    题目描述 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和.3.子集的算术和的算术和.4.子集的算术和的异或和.目前为止,小呆已经解决了前三个问题 ...

  3. 复习1背包dp

    背包问题是对于一个有限制的容器,一般计算可以装的物品的价值最值或数量.通常每个物品都有两个属性空间和价值,有时还有数量或别的限制条件,这个因体而异. 背包大概分成3部分,下面会细述这最经典的3种题型 ...

  4. HDU 5119 Happy Matt Friends (背包DP + 滚动数组)

    题目链接:HDU 5119 Problem Description Matt has N friends. They are playing a game together. Each of Matt ...

  5. 背包dp整理

    01背包 动态规划是一种高效的算法.在数学和计算机科学中,是一种将复杂问题的分成多个简单的小问题思想 ---- 分而治之.因此我们使用动态规划的时候,原问题必须是重叠的子问题.运用动态规划设计的算法比 ...

  6. hdu 5534 Partial Tree 背包DP

    Partial Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  7. HDU 5501 The Highest Mark 背包dp

    The Highest Mark Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

  8. Codeforces Codeforces Round #319 (Div. 2) B. Modulo Sum 背包dp

    B. Modulo Sum Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/577/problem/ ...

  9. noj [1479] How many (01背包||DP||DFS)

    http://ac.nbutoj.com/Problem/view.xhtml?id=1479 [1479] How many 时间限制: 1000 ms 内存限制: 65535 K 问题描述 The ...

随机推荐

  1. GitHub 手把手教你如何把本地项目或代码提交到Github托管

    GitHub 手把手教你如何把项目或代码提交到Github托管 启动Git Bash命令行 重点内容 1.首先打开你的github,点击新建项目,点击new repositories ,然后直接给项目 ...

  2. Spark 部署即提交模式意义解析

    Spark 的官方从 Cluster Mode Overview 中,官方向我们介绍了 cluster 模式的部署方式. Spark 作为独立进程在集群上运行,他们通过 SparkContext 进行 ...

  3. C++ STL(标准模板库)的学习了解

    C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量.链表.队列.栈. C++ 标准模板库的核心包括以 ...

  4. ~/.ssh/config文件的使用

    Host github-A HostName github.com User git IdentityFile /Users/xxx/.ssh/id_rsa_A IdentitiesOnly yes ...

  5. 【转】目前为止最透彻的的Netty高性能原理和框架架构解析

    转自:https://zhuanlan.zhihu.com/p/48591893 1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器 ...

  6. java命名总结

    下文主要来源于网上,我做了一些编辑整理. “如果你不知道一件事物叫什么, 你就不知道它是什么. 如果你不知道这是什么, 你就不可能坐下来写代码.” ----萨姆·加德纳(Sam Gardiner) 1 ...

  7. ubuntu16.04 overlay 不支持redirect_dir开关

    modinfo overlay--查看overlay版本 通过linux网站--https://elixir.bootlin.com/linux/v4.4.196/source/fs/overlayf ...

  8. 试图从目录中执行 CGI、ISAPI 或其他可执行程序

    首先来看我遇到问题时的情况,直接上图!   从上图的错误提示信息可以看出,是权限不够,被拒绝访问,开始我以为是我的程序的php程序的原因,但是其他站点没事啊,就对这个站点的权限重新分配了下,给了最高权 ...

  9. canvas笔记备忘

    备忘 1. canvas标签的宽和高设置是标签属性设置, 不是 css 属性设置. 如果用 css 属性设置大小, canvas 会被拉伸. 标签属性例如: class, id, style, wid ...

  10. Scheduling In Go

    https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html https://blog.altoros.com/golang-i ...