O - Happy Matt Friends

2023-11-07 17:28
文章标签 friends happy matt

本文主要是介绍O - Happy Matt Friends,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思路:

(1)条件及问题:给定N个数,找到异或值大于等于M的总方案数;

(2)分析:

  1. 可以dfs()枚举,超时;
  2. 考虑dp,dp[i][j]描述在前i个数中选,值为j的方案数;
  3. 则dp[i][j] = dp[i - 1][j] + dp[i - 1][j ^a[i]];

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define ll long long
#define maxx 1024*1024
int a[45];
ll dp[45][maxx];///dp[i][j]代表从第1个数到第i个数,亦或后结果为j的方案的数目
///任何数和0异或后的·结果依然是本身
int main()
{int t,n,m,c=1;scanf("%d",&t);while(t--){memset(dp,0,sizeof(dp));scanf("%d%d",&n,&m);for(int i=1; i<=n; i++)scanf("%d",&a[i]);dp[0][0]=1;for(int i=1; i<=n; i++)for(int j=0; j<maxx; j++)dp[i][j]=dp[i-1][j]+dp[i-1][j^a[i]];ll sum=0;for(int k=m; k<maxx; k++)sum+=dp[n][k];printf("Case #%d: %lld\n",c++,sum);}
}

这篇关于O - Happy Matt Friends的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365153

相关文章

【并查集】 HDU 3172 Virtual Friends

HDU 3172 Virtual Friends 数据量大,不建议用cin。 #include <iostream>#include <string>#include <algorithm>#include <math.h>#include <stdio.h>#include <cstring>#include <stdlib.h>#include <map>using n

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy

问题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy 用C/C++编写的程序实现 class Solution { public:  void replaceSpace(char *str,int length) {      if (str==NULL||length<0)

ESP Friends 技术沙龙报名开启|带您掌握高效 GUI 开发

乐鑫 ESP32 系列 SoC 凭借其功能多样、高性价比、封装友好、资源丰富等优势,已成为全球开发者在需要屏幕显示的泛 IoT 应用里作为项目开发的首选平台。 乐鑫信息科技 (688018.SH) 即将举办 ESP Friends 线下技术沙龙。我们将带您深入探索 ESP32-C2 在小尺寸 LCD (0.96" ~ 1.28") 应用上的开发技巧,教您如何巧妙利用其有限的内存资源。同时,我们还

hdu5172 GTY's gay friends

题意:一个数列,有m组询问l,r,需回答l-r是否为一个1-r-l+1的排列。 分析:n个数为1-n的一个排列需满足两个条件,1.和为(n+1)*n/2,2.所有数不相同。1预处理前缀和即可,2先需处理每个数左边与其最近的相同数的位置pre[i],用线段树维护区间l-r各个数pre[i]的最大值mx,若mx<l则满足条件。 #include<iostream>#include<strin

ACM-ICPC 2014北京邀请赛 H Happy Reverse [模拟]

题意:给出n个二进制串,可以把其中的一些0和1反转(即0变1,1变0),找出转化后n个串中的最大值和最小值的差值。 分析:思路就是把所有的串和反转的存在一个数组中,然后排序,找最大值和最小值的差,(如果是同一个串反转的就找第二大的和最小的或第二小和最大的中的最大值)。注意假如只有一个串的话结果为0 DEBUG: 这题写了好久 1.第一次用vim,很爽,但是还没熟练 2.忽视了

HDU-3172 Virtual Friends 并查集+map

题目链接 #include<stdio.h>#include<iostream>#include<string>#include<string.h>#include<math.h>#include<algorithm>#include<vector>#include<queue>#include<map>using namespace std;const int maxn

TOJ 4284 Happy watering / 贪心

Happy watering 时间限制(普通/Java):1000MS/3000MS     运行内存限制:65536KByte   描述 GBQC国的小明家里有N棵树,每天小明都会给其中一棵树浇水,每次浇水后,树都会长高一些,但由于树的品种不同,每次增长的高度也有所区别。 为了使这N棵树看起来整洁、美观,小明希望最高的树和最低的树的高度差越小越好。现在小明想知道,如果至多

poj 2773 Happy 2006(数论:欧拉函数)

给出n, k,输出与n互质的第k个正整数 这个题归根结底用到了一个性质: gcd(a, b) == gcd(a, b+a*t) (t=0,1,2...) 所以一种方法就是找到小于n且与n互质的所有数prime[]以及其个数cnt 如果k<tot,则直接输出 否则根据上式可知存在循环节,相邻两个循环节之间相差:k/cnt*m 所以结果应该为:k/cnt*m+prime[k%(cnt-1

POJ 2773 Happy 2006 题解与分析

Happy 2006 Time Limit: 3000MSMemory Limit: 65536KTotal Submissions: 8447Accepted: 2777 Description 两个正整数如果称为互质,那么应满足这两数的最大公约数(GCD)为1。例如,1,3,5,7,9……都与2006互质。你现在的工作很容易:对于给定的整数m,找到第k个与M互质的元素,这些

Happy International Children's Day

愿世界上的每个孩子 都能在爱与和平的世界中茁壮成长! Happy International Children's Day 国际儿童节快乐 * 海报使用Midjournet生成,Prompt参考:Comic style, International Children's Day poster, summer elements, vibrant colors, children of vari