HDU 5119 Happy Matt Friends (01背包)
来源:互联网 发布:五金进入货软件 编辑:程序博客网 时间:2024/05/18 03:57
题意:
N<=40个人,每个人有一个权值ki<=106,你可以挑任意多的人并将他们的权值异或(也可以不选)
求最后得到的值大于等于M的取法有多少种
分析:
由于ki<=106我们可以知道xor sum<=(220−1)
根据时限和空间完全足够,无非就是每个数选还是不选,01背包就好了
代码:
//// Created by TaoSama on 2015-10-11// Copyright (c) 2015 TaoSama. All rights reserved.////#pragma comment(linker, "/STACK:1024000000,1024000000")#include <algorithm>#include <cctype>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iomanip>#include <iostream>#include <map>#include <queue>#include <string>#include <set>#include <vector>using namespace std;#define pr(x) cout << #x << " = " << x << " "#define prln(x) cout << #x << " = " << x << endlconst int N = 1 << 20, INF = 0x3f3f3f3f, MOD = 1e9 + 7;typedef long long LL;int n, m, a[45];LL dp[45][N];LL dfs(int i, int w) { LL& ret = dp[i][w]; if(ret >= 0) return ret; if(i == n + 1) return w >= m; ret = 0; ret += dfs(i + 1, w ^ a[i]); ret += dfs(i + 1, w); return ret;}int main() {#ifdef LOCAL freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin);// freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout);#endif ios_base::sync_with_stdio(0); int t; scanf("%d", &t); int kase = 0; while(t--) { scanf("%d%d", &n, &m); for(int i = 1; i <= n; ++i) scanf("%d", a + i); memset(dp, -1, sizeof dp); printf("Case #%d: %I64d\n", ++kase, dfs(1, 0)); } return 0;}
0 0
- HDU 5119 Happy Matt Friends (01背包)
- hdu 5119 Happy Matt Friends (背包,高斯消元)
- HDU-5119 Happy Matt Friends(背包)
- -----背包 DP hdu 5119- Happy Matt Friends
- HDU 5119 Happy Matt Friends(DP)
- hdu 5119 Happy Matt Friends(dp)
- HDU - 5119 Happy Matt Friends(DP)
- HDU 5119 Happy Matt Friends(dp)
- HDU 5119 Happy Matt Friends(DP)
- HDU 5119 Happy Matt Friends(dp)
- hdu 5119 Happy Matt Friends
- HDU-5119-Happy Matt Friends
- HDU 5119 Happy Matt Friends
- HDU 5119 Happy Matt Friends
- hdu 5119 Happy Matt Friends
- HDU 5119 Happy Matt Friends
- HDU 5119 Happy Matt Friends (14北京 类背包dp)
- HDU 5119 Happy Matt Friends【背包+位运算】
- Myeclipse中SVN的使用
- 扫描线 求挖空矩形合并面积 hdu3265 Posters
- poj 1195 Mobile phones(二维树状数组)
- 1418 - Trees on My Island ( Peake's theorem )
- 构建android UI 学习心得,摘要
- HDU 5119 Happy Matt Friends (01背包)
- 扫描线 矩形内围起的星星亮度总和最大大 poj2482 Stars in Your Window
- Sql存储过程中判断某个数据表的某一行的某列的值是否为NUll
- lintcode-将表达式转换为逆波兰表达式-370
- 第二阶段计划
- 算法研发工作中对于MPI和Spark的一些困惑?
- 轻量化ViewController的几个小技巧
- C++primer学习:智能指针与动态内存(1)
- HP生活