yougth和他的朋友们

时间限制:10000 ms  |  内存限制:65535 KB
难度:3
描述
yougth的朋友们各自有一个魔法值x,现在yougth想从这些朋友中挑出一些,使得这些朋友的魔法值的异或和大于等于m。这样的组合共有多少种?

输入
多组数据
每组数据首先两个数n和m,表示朋友的个数和要大于等于的值,((1 ≤ n ≤ 40, 0 ≤ m ≤ 10^6)
接下来n个数表示每个人的魔法值x(0 ≤ x ≤ 10^6)
输出
输出满足条件的方案数
样例输入
3 2
1 2 3
3 3
1 2 3
样例输出
4
2
提示
第一个样例
1^2 = 3
1^3 = 2
2
3

共四个满足条件,故直接输出4

思路:定义dp[i][j]为把 i 放入后得到 j 方案数

dp[i][j]=dp[i-1[j]+dp[i-1][j];

由于数据有点大 看了下younth的博客 发现得用了滚动数组优化

也的时候还得注意 RE 也就是1048000后面的数据异或后数据可能超过数组范围(跪哭了)

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
long long dp[2][1200005];
int a[45];
int main()
{int n,m,i,j;while(~scanf("%d%d",&n,&m)){for(i=1; i<=n; i++)scanf("%d",&a[i]);memset(dp,0,sizeof(dp));dp[0][0] = 1;for(i=1; i<=n; i++)for(j=0; j<1048576; j++)//{dp[i%2][j]=dp[(i-1)%2][j]+dp[(i-1)%2][j^a[i]];}long long ans = 0;for(i=m;i<1048576;i++)ans+=dp[n%2][i];printf("%lld\n",ans);}
}

nyoj1189 yougth和他的朋友们(滚动数组运用)相关推荐

  1. 洛谷 P2679 子串 【dp神题】【滚动数组】【2015 noip d2t2】

    偷个懒,题解看这里:https://www.luogu.org/problemnew/solution/P2679 看作者 GuessYCB  写的 ===2018.9.6=== 这一次算理解深一点了 ...

  2. 高级打字机【主席树】【滚动数组】【块状链表】

    题目大意: 一个计算机支持一下三中操作: TT xx:在文章末尾打下一个小写字母xx. UU xx:撤销最后的xx次修改操作. QQ xx:询问当前文章中第xx个字母并输出. InputInput 7 ...

  3. 《滚动数组》---滚动数组思想,运用在动态规划当中

    滚动数组是DP中的一种编程思想.简单的理解就是让数组滚动起来,每次都使用固定的几个存储空间,来达到压缩,节省存储空间的作用.起到优化空间,主要应用在递推或动态规划中(如01背包问题).因为DP题目是一 ...

  4. hdu 1024(滚动数组优化)

    本题的大致意思为给定一个数组,求其分成m个不相交子段和最大值的问题. 解题思路:dp[i][j]表示前j个数分成i组,且j在第i组里的最大值. dp[i][j] = max{dp[i][j-1]+a[ ...

  5. HDU 1176 免费馅饼 矩阵取数, dp + 滚动数组

    http://acm.hdu.edu.cn/showproblem.php?pid=1176 首先可以处理出整张地图的状态. book[T][POS]表示第T秒,在第pos个地方有多少个馅饼. dp[ ...

  6. 滚动数组~\(≧▽≦)/~

    今天第一次用了滚动数组,缘由要从一道题说起:POJ 1159 Palindrome 题意:给你一个字符串,求对字符串最少添加几个字符可变为回文串. 分析: 简单做法是直接对它和它的逆序串求最长公共子序 ...

  7. Gym 100507G The Debut Album (滚动数组dp)

    The Debut Album 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/G Description Pop-group & ...

  8. 动态规划 0-1背包问题 滚动数组

    定义 dp[j]是从物品0到i中挑选物品,放进容量为j的背包中的最大价值总和. 初始化 int dp[maxn]; memset(dp, sizeof(dp), -0x3f3f3f3f); 一维滚动数 ...

  9. Top Secret Task(dp+滚动数组)

    传送门: 题目 dp[i][j][k] 表示 考虑到第i个数 计算前j个数的和 进行了k次操作 则有 若不把第i个数放入前j个数中 dp[i][j][k] = dp[i-1][j][k] 若把第i个数 ...

  10. HDU - 1024 Max Sum Plus Plus 最大m段子段和+滚动数组优化

    给定n个数字,求其中m段的最大值(段与段之间不用连续,但是一段中要连续) 例如:2 5 1 -2 2 3 -1五个数字中选2个,选择1和2 3这两段. dp[i][j]从前j个数字中选择i段,然后根据 ...

最新文章

  1. Spring NamedParameterJdbcTemplate 详解
  2. sql server数据库查询超时报错
  3. JS 中判断一个对象是否为数组对象?
  4. Spring MVC 入门基础(一)
  5. Illustrator 教程,如何在 Ai 中创建一个新文档?
  6. laravel 5 : Class 'input' not found
  7. 谷歌插件如何下载到本地
  8. 硬件基础知识(10)---元器件选型规范大全
  9. Revit 和 ArchiCAD 在软件设计理念方面的对比
  10. 支付宝支付接口的使用
  11. dp在约会上是什么意思_第一次约会,女生让你碰这三个部位,十有八九就是对你有意思...
  12. Python算24点
  13. idv和vdi的优劣势_IDV和VDI区别
  14. django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066
  15. mysql 字段值分布很少的字段要不要加索引
  16. 新手入门PS人像磨皮教程
  17. OpenCL基础(一)
  18. [Windows] Flash.Player|AX|PP|32.0.0.142 去广告 不跳更新版
  19. 正则表达式(一) search
  20. 全国计算机考试 mysql_全国计算机等级考试二级MySQL试题及答案

热门文章

  1. eclipse 3.x中热部署WEB程序TOMCAT配置
  2. SQLHelp sql数据库的DAL
  3. redis java客户端封装_redis的java客户端Jedis简单封装
  4. 计算机组成原理学习-哈工大《计算机组成原理》第二章
  5. SpringBoot整合jsp的使用
  6. 【转】Topshelf 搭建 Windows 服务
  7. Day 45 Ansible批量管理
  8. 利用 vimdiff 递归对比文件夹差异
  9. 《Linux指令从入门到精通》——4.4 Linux下的文本编辑指令
  10. eclipse导入不到嵌套的项目