Happy Matt Friends

Happy Matt Friends

Time Limit: 6000/6000 MS (Java/Others)    Memory Limit: 510000/510000 K (Java/Others)
Total Submission(s): 0    Accepted Submission(s): 0

Problem Description

Matt has N friends. They are playing a game together.

Each of Matt’s friends has a magic number. In the game, Matt selects some (could be zero) of his friends. If the xor (exclusive-or) sum of the selected friends’magic numbers is no less than M , Matt wins.

Matt wants to know the number of ways to win.

Input

The first line contains only one integer T , which indicates the number of test cases.

For each test case, the first line contains two integers N, M (1 ≤ N ≤ 40, 0 ≤ M ≤ 106).

In the second line, there are N integers ki (0 ≤ ki ≤ 106), indicating the i-th friend’s magic number.

Output

For each test case, output a single line “Case #x: y”, where x is the case number (starting from 1) and y indicates the number of ways where Matt can win.

Sample Input

2

3 2

1 2 3

3 3

1 2 3

Sample Output

Case #1: 4

Case #2: 2

Hint

In the ?rst sample, Matt can win by selecting:
friend with number 1 and friend with number 2. The xor sum is 3.
friend with number 1 and friend with number 3. The xor sum is 2.
friend with number 2. The xor sum is 2.
friend with number 3. The xor sum is 3. Hence, the answer is 4.

解题:dp计数

dp弱到渣啊!在码代码的猿猿巨巨指导下才搞定!

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <algorithm>
 6 #include <climits>
 7 #include <vector>
 8 #include <queue>
 9 #include <cstdlib>
10 #include <string>
11 #include <set>
12 #include <map>
13 #include <stack>
14 #define LL long long
15 #define INF 0x3f3f3f3f
16 #define pii pair<int,int>
17 using namespace std;
18 const int maxn = 1<<21;
19 int dp[2][maxn],d[41],n,m;
20 int main() {
21     int T,cs=1;
22     scanf("%d",&T);
23     while(T--) {
24         scanf("%d %d",&n,&m);
25         memset(dp,0,sizeof(dp));
26         for(int i = 0; i < n; ++i)
27             scanf("%d",d+i);
28         LL ans = 0;
29         dp[0][0] = 1;
30         int cur = 0;
31         for(int i = 0; i < n; ++i) {
32             memset(dp[cur^1],0,sizeof(dp[cur^1]));
33             for(int j = 0; j < maxn; ++j) {
34                 int tmp = j^d[i];
35                 dp[cur^1][tmp] += dp[cur][j];
36                 dp[cur^1][j] += dp[cur][j];
37             }
38             cur ^= 1;
39         }
40         for(int i = m; i < maxn; ++i)
41             if(dp[cur][i]) ans += dp[cur][i];
42         printf("Case #%d: %I64d\n",cs++,ans);
43     }
44     return 0;
45 }

时间: 2024-11-08 11:00:34

Happy Matt Friends的相关文章

Happy Matt Friends(DP)

Happy Matt Friends Time Limit: 6000/6000 MS (Java/Others)    Memory Limit: 510000/510000 K (Java/Others)Total Submission(s): 3700    Accepted Submission(s): 1407 Problem Description Matt has N friends. They are playing a game together. Each of Matt’s

hdoj 5112 A Curious Matt

A Curious Matt Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)Total Submission(s): 1338    Accepted Submission(s): 735 Problem Description There is a curious man called Matt. One day, Matt's best friend Ted is wa

HDU 5119 Happy Matt Friends(简单二维dp)

题意不再说了,就是一个二维的dp,维持取最大值是多少. Happy Matt Friends Time Limit: 6000/6000 MS (Java/Others)    Memory Limit: 510000/510000 K (Java/Others) Total Submission(s): 608    Accepted Submission(s): 229 Problem Description Matt has N friends. They are playing a ga

HDOJ 5119 Happy Matt Friends DP

N*M暴力DP.... Happy Matt Friends Time Limit: 6000/6000 MS (Java/Others)    Memory Limit: 510000/510000 K (Java/Others) Total Submission(s): 82    Accepted Submission(s): 34 Problem Description Matt has N friends. They are playing a game together. Each

HDOJ 5112 A Curious Matt 水题

A Curious Matt Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 64    Accepted Submission(s): 49 Problem Description There is a curious man called Matt. One day, Matt's best friend Ted is wand

HDU5112 A Curious Matt

A Curious Matt Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 25    Accepted Submission(s): 25 Problem Description There is a curious man called Matt. One day, Matt's best friend Ted is wand

水题:HDU 5112 A Curious Matt

Description There is a curious man called Matt. One day, Matt's best friend Ted is wandering on the non-negative half of the number line. Matt finds it interesting to know the maximal speed Ted may reach. In order to do so, Matt takes records of Ted’

hustwinterC - Happy Matt Friends(dp解法)

Description Matt has N friends. They are playing a game together. Each of Matt’s friends has a magic number. In the game, Matt selects some (could be zero) of his friends. If the xor (exclusive-or) sum of the selected friends’magic numbers is no less

2014ACM/ICPC亚洲区北京站-A-(Curious Matt)

A Curious Matt                                   Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Problem Description There is a curious man called Matt. One day, Matt's best friend Ted is wandering on the non-neg

A Curious Matt(2014ACM/ICPC亚洲区北京站)

A Curious Matt Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 0    Accepted Submission(s): 0 Problem Description There is a curious man called Matt. One day, Matt's best friend Ted is wander